From 92a2f26e52e7b710e46d3100fcc1867452da79fe Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Fri, 27 Jun 2003 02:51:10 +0000 Subject: [PATCH] Rename gncbook and gncsession to qofbook and qofsession git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@8762 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/Account.c | 26 +- src/engine/AccountP.h | 4 +- src/engine/Group.c | 7 +- src/engine/GroupP.h | 4 +- src/engine/Makefile.am | 17 +- src/engine/Period.c | 4 +- src/engine/SX-book.c | 2 +- src/engine/Transaction.c | 33 ++- src/engine/TransactionP.h | 4 +- src/engine/engine-helpers.c | 5 +- src/engine/engine-helpers.h | 4 +- src/engine/gnc-be-utils.h | 38 ++- src/engine/gnc-commodity.c | 2 +- src/engine/gnc-engine-util.h | 30 +-- src/engine/gnc-pricedb-p.h | 4 +- src/engine/gnc-pricedb.c | 18 +- src/engine/gnc-session-scm.c | 14 +- src/engine/gnc-session-scm.h | 11 +- src/engine/gnc-session.h | 251 +----------------- src/engine/gw-engine-spec.scm | 26 +- src/engine/{BackendP.h => qofbackend-p.h} | 77 +++--- src/engine/{Backend.c => qofbackend.c} | 24 +- src/engine/{Backend.h => qofbackend.h} | 19 +- src/engine/qofbook-p.h | 6 +- src/engine/qofbook.c | 18 +- src/engine/qofbook.h | 4 +- src/engine/qofobject-p.h | 12 +- src/engine/qofobject.c | 2 +- src/engine/qofobject.h | 36 +-- src/engine/qofquery.c | 22 +- src/engine/qofquerycore.c | 167 ++++++------ .../{gnc-session-p.h => qofsession-p.h} | 24 +- src/engine/{gnc-session.c => qofsession.c} | 229 ++++++++-------- src/engine/qofsession.h | 250 +++++++++++++++++ src/engine/test-core/test-engine-stuff.c | 64 ++--- src/engine/test-core/test-engine-stuff.h | 44 +-- src/engine/test/test-commodities.c | 2 +- src/engine/test/test-freq-spec.c | 2 +- src/engine/test/test-lots.c | 6 +- src/engine/test/test-object.c | 2 +- src/engine/test/test-period.c | 4 +- src/engine/test/test-query.c | 10 +- src/engine/test/test-resolve-file-path.c | 2 +- src/engine/test/test-split-vs-account.c | 10 +- src/engine/test/test-transaction-reversal.c | 6 +- src/engine/test/test-transaction-voiding.c | 5 +- src/engine/xlate.pl | 22 +- 47 files changed, 812 insertions(+), 761 deletions(-) rename src/engine/{BackendP.h => qofbackend-p.h} (87%) rename src/engine/{Backend.c => qofbackend.c} (88%) rename src/engine/{Backend.h => qofbackend.h} (92%) rename src/engine/{gnc-session-p.h => qofsession-p.h} (84%) rename src/engine/{gnc-session.c => qofsession.c} (80%) create mode 100644 src/engine/qofsession.h diff --git a/src/engine/Account.c b/src/engine/Account.c index 4169ab29ad..2dd4e59ac3 100644 --- a/src/engine/Account.c +++ b/src/engine/Account.c @@ -29,8 +29,6 @@ #include #include "AccountP.h" -#include "Backend.h" -#include "BackendP.h" #include "Group.h" #include "GroupP.h" #include "TransactionP.h" @@ -45,6 +43,8 @@ #include "kvp-util-p.h" #include "messages.h" +#include "qofbackend.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofid-p.h" @@ -383,7 +383,7 @@ xaccFreeAccount (Account *acc) void xaccAccountBeginEdit (Account *acc) { - Backend * be; + QofBackend * be; if (!acc) return; acc->editlevel++; @@ -407,7 +407,7 @@ xaccAccountBeginEdit (Account *acc) void xaccAccountCommitEdit (Account *acc) { - Backend * be; + QofBackend * be; if (!acc) return; @@ -469,15 +469,15 @@ xaccAccountCommitEdit (Account *acc) be = xaccAccountGetBackend (acc); if (be && be->commit) { - GNCBackendError errcode; + QofBackendError errcode; /* clear errors */ do { - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); } while (ERR_BACKEND_NO_ERR != errcode); (be->commit) (be, GNC_ID_ACCOUNT, acc); - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); if (ERR_BACKEND_NO_ERR != errcode) { @@ -487,17 +487,17 @@ xaccAccountCommitEdit (Account *acc) /* XXX hack alert FIXME implement account rollback */ PERR (" backend asked engine to rollback, but this isn't" " handled yet. Return code=%d", errcode); - err = xaccBackendGetMessage(be); + err = qof_backend_get_message(be); /* g_strdup here, because err needs to be g_freed if from Backend */ err = err ? err : g_strdup(_("Error message not available")); /* Translators: %d is the (internal) error number. %s is the * human-readable error description. */ PWARN_GUI(_("Error occurred while saving Account:\n%d: %s"), - xaccBackendGetError(be), err); + qof_backend_get_error(be), err); /* push error back onto the stack */ - xaccBackendSetError (be, errcode); - xaccBackendSetMessage (be, err); + qof_backend_set_error (be, errcode); + qof_backend_set_message (be, err); g_free(err); } } @@ -3153,7 +3153,7 @@ xaccAccountFindTransByDesc(Account *account, const char *description) /* ================================================================ */ -Backend * +QofBackend * xaccAccountGetBackend (Account * acc) { if (!acc || !acc->book) return NULL; @@ -3176,7 +3176,7 @@ account_foreach (QofBook *book, QofEntityForeachCB cb, gpointer ud) } static QofObject account_object_def = { - GNC_OBJECT_VERSION, + QOF_OBJECT_VERSION, GNC_ID_ACCOUNT, "Account", NULL, /* book_begin */ diff --git a/src/engine/AccountP.h b/src/engine/AccountP.h index 383016d5d3..a249d88b4f 100644 --- a/src/engine/AccountP.h +++ b/src/engine/AccountP.h @@ -42,11 +42,11 @@ #include "config.h" #include "Account.h" -#include "Backend.h" #include "gnc-commodity.h" #include "gnc-engine.h" #include "gnc-numeric.h" #include "kvp_frame.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofid.h" @@ -211,7 +211,7 @@ gint32 xaccAccountGetVersion (Account*); * persistent-data storage backend associated with this account. */ -Backend * xaccAccountGetBackend (Account *account); +QofBackend * xaccAccountGetBackend (Account *account); /* Register Accounts with the engine */ gboolean xaccAccountRegister (void); diff --git a/src/engine/Group.c b/src/engine/Group.c index e54ec1c08e..5a3ceb1903 100644 --- a/src/engine/Group.c +++ b/src/engine/Group.c @@ -29,14 +29,13 @@ #include "Account.h" #include "AccountP.h" -#include "Backend.h" -#include "BackendP.h" #include "Group.h" #include "GroupP.h" #include "TransactionP.h" #include "gnc-engine-util.h" #include "gnc-event-p.h" #include "gnc-numeric.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofid-p.h" @@ -1280,7 +1279,7 @@ xaccGroupForEachAccount (AccountGroup *grp, /* ============================================================== */ -Backend * +QofBackend * xaccGroupGetBackend (AccountGroup *grp) { grp = xaccGroupGetRoot (grp); @@ -1317,7 +1316,7 @@ group_mark_clean(QofBook *book) static QofObject group_object_def = { - interface_version: GNC_OBJECT_VERSION, + interface_version: QOF_OBJECT_VERSION, name: GNC_ID_GROUP, type_label: "AccountGroup", book_begin: group_book_begin, diff --git a/src/engine/GroupP.h b/src/engine/GroupP.h index 7e04dfb502..59db35ce0d 100644 --- a/src/engine/GroupP.h +++ b/src/engine/GroupP.h @@ -38,9 +38,9 @@ #include "config.h" -#include "BackendP.h" #include "Transaction.h" #include "gnc-numeric.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofid.h" @@ -100,7 +100,7 @@ void xaccSetAccountGroup (QofBook *book, AccountGroup *grp); * The xaccGroupGetBackend() subroutine will find the * persistent-data storage backend associated with this account group. */ -Backend * xaccGroupGetBackend (AccountGroup *group); +QofBackend * xaccGroupGetBackend (AccountGroup *group); gboolean xaccGroupRegister (void); diff --git a/src/engine/Makefile.am b/src/engine/Makefile.am index d0fe7c6fe7..32538ce95a 100644 --- a/src/engine/Makefile.am +++ b/src/engine/Makefile.am @@ -10,7 +10,6 @@ AM_CFLAGS = \ libgncmod_engine_la_SOURCES = \ Account.c \ - Backend.c \ FreqSpec.c \ Group.c \ Period.c \ @@ -31,7 +30,6 @@ libgncmod_engine_la_SOURCES = \ gnc-lot.c \ gnc-numeric.c \ gnc-pricedb.c \ - gnc-session.c \ gnc-session-scm.c \ gnc-trace.c \ gncmod-engine.c \ @@ -40,19 +38,20 @@ libgncmod_engine_la_SOURCES = \ kvp-util.c \ md5.c \ messages.c \ + qofbackend.c \ qofbook.c \ qofid.c \ + qofobject.c \ qofquery.c \ qofquerycore.c \ qofqueryobject.c \ - qofobject.c + qofsession.c EXTRA_libgncmod_engine_la_SOURCES = iso-4217-currencies.c gncincludedir = ${GNC_INCLUDE_DIR} gncinclude_HEADERS = \ Account.h \ - Backend.h \ FreqSpec.h \ GNCId.h \ Group.h \ @@ -89,16 +88,17 @@ gncinclude_HEADERS = \ kvp-scm.h \ kvp-util.h \ messages.h \ + qofbackend.h \ qofbook.h \ qofid.h \ + qofobject.h \ qofquery.h \ qofquerycore.h \ qofqueryobject.h \ - qofobject.h + qofsession.h noinst_HEADERS = \ AccountP.h \ - BackendP.h \ FreqSpecP.h \ GroupP.h \ QueryP.h \ @@ -111,17 +111,18 @@ noinst_HEADERS = \ gnc-lot.h \ gnc-lot-p.h \ gnc-pricedb-p.h \ - gnc-session-p.h \ kvp-util-p.h \ md5.h \ gw-engine.h \ gw-kvp.h \ + qofbackend-p.h \ qofbook-p.h \ qofid-p.h \ + qofobject-p.h \ qofquery-p.h \ qofquerycore-p.h \ qofqueryobject-p.h \ - qofobject-p.h + qofsession-p.h noinst_SCRIPTS = iso-currencies-to-c diff --git a/src/engine/Period.c b/src/engine/Period.c index 0a102765fa..2e4982096e 100644 --- a/src/engine/Period.c +++ b/src/engine/Period.c @@ -36,7 +36,6 @@ Open questions: how do we deal with the backends ??? */ #include "AccountP.h" -#include "BackendP.h" #include "gnc-engine-util.h" #include "gnc-event-p.h" #include "Group.h" @@ -44,6 +43,7 @@ Open questions: how do we deal with the backends ??? #include "kvp-util-p.h" #include "Period.h" #include "TransactionP.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofid-p.h" @@ -181,7 +181,7 @@ void gnc_book_partition (QofBook *dest_book, QofBook *src_book, Query *query) { AccountGroup *src_grp, *dst_grp; - Backend *be; + QofBackend *be; time_t now; GList *split_list, *snode; diff --git a/src/engine/SX-book.c b/src/engine/SX-book.c index 188b4783df..97ce6493ec 100644 --- a/src/engine/SX-book.c +++ b/src/engine/SX-book.c @@ -207,7 +207,7 @@ sxtt_mark_clean(QofBook *book) static QofObject sxtt_object_def = { - interface_version: GNC_OBJECT_VERSION, + interface_version: QOF_OBJECT_VERSION, name: GNC_ID_SXTT, type_label: "SXTT", book_begin: sxtt_book_begin, diff --git a/src/engine/Transaction.c b/src/engine/Transaction.c index cc4d321a95..ac63eafaa2 100644 --- a/src/engine/Transaction.c +++ b/src/engine/Transaction.c @@ -32,8 +32,6 @@ #include #include "AccountP.h" -#include "Backend.h" -#include "BackendP.h" #include "Group.h" #include "TransactionP.h" #include "TransLog.h" @@ -46,6 +44,7 @@ #include "gnc-lot.h" #include "messages.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofid-p.h" @@ -1718,7 +1717,7 @@ xaccTransSetCurrency (Transaction *trans, gnc_commodity *curr) void xaccTransBeginEdit (Transaction *trans) { - Backend *be; + QofBackend *be; if (!trans) return; trans->editlevel ++; @@ -1748,7 +1747,7 @@ void xaccTransCommitEdit (Transaction *trans) { Split *split; - Backend *be; + QofBackend *be; const char *str; if (!trans) return; @@ -1831,16 +1830,16 @@ xaccTransCommitEdit (Transaction *trans) be = xaccTransactionGetBackend (trans); if (be && be->commit) { - GNCBackendError errcode; + QofBackendError errcode; /* clear errors */ do { - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); } while (ERR_BACKEND_NO_ERR != errcode); (be->commit) (be, GNC_ID_TRANS, trans); - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); if (ERR_BACKEND_NO_ERR != errcode) { /* if the backend puked, then we must roll-back @@ -1854,7 +1853,7 @@ xaccTransCommitEdit (Transaction *trans) } /* push error back onto the stack */ - xaccBackendSetError (be, errcode); + qof_backend_set_error (be, errcode); xaccTransRollbackEdit (trans); return; @@ -1894,7 +1893,7 @@ xaccTransCommitEdit (Transaction *trans) void xaccTransRollbackEdit (Transaction *trans) { - Backend *be; + QofBackend *be; Transaction *orig; int force_it=0, mismatch=0; int i; @@ -2077,16 +2076,16 @@ xaccTransRollbackEdit (Transaction *trans) be = xaccTransactionGetBackend (trans); if (be && be->rollback) { - GNCBackendError errcode; + QofBackendError errcode; /* clear errors */ do { - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); } while (ERR_BACKEND_NO_ERR != errcode); (be->rollback) (be, GNC_ID_TRANS, trans); - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); if (ERR_BACKEND_MOD_DESTROY == errcode) { /* The backend is asking us to delete this transaction. @@ -2098,7 +2097,7 @@ xaccTransRollbackEdit (Transaction *trans) xaccFreeTransaction (trans); /* push error back onto the stack */ - xaccBackendSetError (be, errcode); + qof_backend_set_error (be, errcode); LEAVE ("deleted trans addr=%p\n", trans); return; } @@ -2106,7 +2105,7 @@ xaccTransRollbackEdit (Transaction *trans) { PERR ("Rollback Failed. Ouch!"); /* push error back onto the stack */ - xaccBackendSetError (be, errcode); + qof_backend_set_error (be, errcode); } } @@ -3531,7 +3530,7 @@ xaccTransReverse (Transaction *trans) /********************************************************************\ \********************************************************************/ -Backend * +QofBackend * xaccTransactionGetBackend (Transaction *trans) { if (!trans || !trans->book) return NULL; @@ -3562,7 +3561,7 @@ split_foreach (QofBook *book, QofEntityForeachCB fcn, gpointer user_data) /* hook into the gncObject registry */ static QofObject split_object_def = { - GNC_OBJECT_VERSION, + QOF_OBJECT_VERSION, GNC_ID_SPLIT, "Split", NULL, /* book_begin */ @@ -3648,7 +3647,7 @@ trans_foreach (QofBook *book, QofEntityForeachCB fcn, gpointer user_data) } static QofObject trans_object_def = { - GNC_OBJECT_VERSION, + QOF_OBJECT_VERSION, GNC_ID_TRANS, "Transaction", NULL, /* book_begin */ diff --git a/src/engine/TransactionP.h b/src/engine/TransactionP.h index 5ab99eb5dc..34b5fd26eb 100644 --- a/src/engine/TransactionP.h +++ b/src/engine/TransactionP.h @@ -50,10 +50,10 @@ #include #include -#include "Backend.h" #include "gnc-engine.h" /* for typedefs */ #include "gnc-numeric.h" #include "kvp_frame.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofid.h" @@ -255,6 +255,6 @@ gboolean xaccTransRegister (void); * persistent-data storage backend associated with this * transaction. */ -Backend * xaccTransactionGetBackend (Transaction *trans); +QofBackend * xaccTransactionGetBackend (Transaction *trans); #endif /* XACC_TRANSACTION_P_H */ diff --git a/src/engine/engine-helpers.c b/src/engine/engine-helpers.c index 8a1e9a3a29..dec58929c5 100644 --- a/src/engine/engine-helpers.c +++ b/src/engine/engine-helpers.c @@ -29,7 +29,6 @@ #include #include "Account.h" -#include "Backend.h" #include "Group.h" #include "engine-helpers.h" #include "glib-helpers.h" @@ -2365,10 +2364,10 @@ gnc_book_to_scm (QofBook *book) } /******************************************************************** - * gnc_session_to_scm + * qof_session_to_scm ********************************************************************/ SCM -gnc_session_to_scm (GNCSession *session) +qof_session_to_scm (QofSession *session) { static SCM session_type = SCM_UNDEFINED; diff --git a/src/engine/engine-helpers.h b/src/engine/engine-helpers.h index b7727084e6..9e30ec54a5 100644 --- a/src/engine/engine-helpers.h +++ b/src/engine/engine-helpers.h @@ -29,13 +29,13 @@ #include #include "gnc-engine.h" -#include "gnc-session.h" #include "Account.h" #include "Query.h" #include "Transaction.h" #include "guid.h" #include "guile-mappings.h" #include "qofbook.h" +#include "qofsession.h" Timespec gnc_transaction_get_date_posted(Transaction *t); Timespec gnc_transaction_get_date_entered(Transaction *t); @@ -82,6 +82,6 @@ int gnc_numeric_p(SCM arg); gnc_commodity * gnc_scm_to_commodity(SCM scm); SCM gnc_commodity_to_scm (const gnc_commodity *commodity); SCM gnc_book_to_scm (QofBook *book); -SCM gnc_session_to_scm (GNCSession *session); +SCM qof_session_to_scm (QofSession *session); #endif diff --git a/src/engine/gnc-be-utils.h b/src/engine/gnc-be-utils.h index 307dd67028..6f3b15b6eb 100644 --- a/src/engine/gnc-be-utils.h +++ b/src/engine/gnc-be-utils.h @@ -1,5 +1,25 @@ +/********************************************************************\ + * gnc-be-utils.h: api for data storage backend * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License* + * along with this program; if not, contact: * + * * + * Free Software Foundation Voice: +1-617-542-5942 * + * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * + * Boston, MA 02111-1307, USA gnu@gnu.org * + * * +\********************************************************************/ /* - * gnc-be-utils.h -- GnuCash Backend Utilities + * gnc-be-utils.h -- QOF Backend Utilities * common code used by objects to define begin_edit() and * commit_edit() functions. * @@ -10,8 +30,8 @@ #ifndef GNC_BE_UTILS_H #define GNC_BE_UTILS_H -#include "BackendP.h" #include "gnc-engine-util.h" +#include "qofbackend-p.h" #include "qofbook.h" /* begin_edit helper @@ -28,7 +48,7 @@ */ #define GNC_BEGIN_EDIT(obj,type) { \ - Backend * be; \ + QofBackend * be; \ if (!(obj)) return; \ \ (obj)->editlevel++; \ @@ -95,7 +115,7 @@ * obj: the object being committed * type: the type of the object * on_error: a function called if there is a backend error. - * void (*on_error)(obj, GNCBackendError) + * void (*on_error)(obj, QofBackendError) * on_done: a function called after the commit is complete but before * the object is freed. This is where you clear the "dirty" * flag, and perform any other operations after the commit. @@ -104,26 +124,26 @@ * void (*on_free)(obj) */ #define GNC_COMMIT_EDIT_PART2(obj,type,on_error,on_done,on_free) { \ - Backend * be; \ + QofBackend * be; \ \ /* See if there's a backend. If there is, invoke it. */ \ be = gnc_book_get_backend ((obj)->book); \ if (be && be->commit) \ { \ - GNCBackendError errcode; \ + QofBackendError errcode; \ \ /* clear errors */ \ do { \ - errcode = xaccBackendGetError (be); \ + errcode = qof_backend_get_error (be); \ } while (ERR_BACKEND_NO_ERR != errcode); \ \ (be->commit) (be, (type), (obj)); \ - errcode = xaccBackendGetError (be); \ + errcode = qof_backend_get_error (be); \ if (ERR_BACKEND_NO_ERR != errcode) \ { \ (obj)->do_free = FALSE; \ (on_error)((obj), errcode); \ - xaccBackendSetError (be, errcode); \ + qof_backend_set_error (be, errcode); \ } \ } \ (on_done)(obj);\ diff --git a/src/engine/gnc-commodity.c b/src/engine/gnc-commodity.c index 307dcde0b2..e5b516b9f3 100644 --- a/src/engine/gnc-commodity.c +++ b/src/engine/gnc-commodity.c @@ -1126,7 +1126,7 @@ commodity_table_book_end (QofBook *book) */ static QofObject commodity_table_object_def = { - interface_version: GNC_OBJECT_VERSION, + interface_version: QOF_OBJECT_VERSION, name: GNC_ID_COMMODITY_TABLE, type_label: "CommodityTable", book_begin: commodity_table_book_begin, diff --git a/src/engine/gnc-engine-util.h b/src/engine/gnc-engine-util.h index 94e7e0308d..138bb2d725 100644 --- a/src/engine/gnc-engine-util.h +++ b/src/engine/gnc-engine-util.h @@ -28,8 +28,8 @@ @author Copyright (C) 1997-2002 Linas Vepstas */ -#ifndef GNC_ENGINE_UTIL_H -#define GNC_ENGINE_UTIL_H +#ifndef QOF_UTIL_H +#define QOF_UTIL_H #include "config.h" @@ -40,18 +40,18 @@ /** Macros *****************************************************/ -#define SAFE_STRCMP_REAL(fcn,da,db) { \ - if ((da) && (db)) { \ - int retval = fcn ((da), (db)); \ - /* if strings differ, return */ \ - if (retval) return retval; \ - } else \ - if ((!(da)) && (db)) { \ - return -1; \ - } else \ - if ((da) && (!(db))) { \ - return +1; \ - } \ +#define SAFE_STRCMP_REAL(fcn,da,db) { \ + if ((da) && (db)) { \ + int retval = fcn ((da), (db)); \ + /* if strings differ, return */ \ + if (retval) return retval; \ + } else \ + if ((!(da)) && (db)) { \ + return -1; \ + } else \ + if ((da) && (!(db))) { \ + return +1; \ + } \ } #define SAFE_STRCMP(da,db) SAFE_STRCMP_REAL(strcmp,(da),(db)) @@ -127,5 +127,5 @@ GCache* gnc_engine_get_string_cache(void); void gnc_engine_string_cache_destroy (void); -#endif +#endif /* QOF_UTIL_H */ /** @} */ diff --git a/src/engine/gnc-pricedb-p.h b/src/engine/gnc-pricedb-p.h index 4b7603d979..a69ab22a42 100644 --- a/src/engine/gnc-pricedb-p.h +++ b/src/engine/gnc-pricedb-p.h @@ -27,9 +27,9 @@ #include -#include "Backend.h" #include "gnc-engine.h" #include "gnc-pricedb.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofid.h" @@ -107,6 +107,6 @@ void gnc_price_set_guid (GNCPrice *p, const GUID *guid); /** register the pricedb object with the gncObject system */ gboolean gnc_pricedb_register (void); -Backend * xaccPriceDBGetBackend (GNCPriceDB *prdb); +QofBackend * xaccPriceDBGetBackend (GNCPriceDB *prdb); #endif diff --git a/src/engine/gnc-pricedb.c b/src/engine/gnc-pricedb.c index 7e43712b97..9c1bbf86e9 100644 --- a/src/engine/gnc-pricedb.c +++ b/src/engine/gnc-pricedb.c @@ -27,13 +27,13 @@ #include #include -#include "BackendP.h" #include "gnc-engine.h" #include "gnc-engine-util.h" #include "gnc-event-p.h" #include "gnc-pricedb-p.h" #include "guid.h" #include "kvp-util.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofid-p.h" @@ -169,7 +169,7 @@ gnc_price_begin_edit (GNCPrice *p) /* See if there's a backend. If there is, invoke it. */ /* We may not be able to find the backend, so make not of that .. */ if (p->db) { - Backend *be; + QofBackend *be; be = xaccPriceDBGetBackend (p->db); if (be && be->begin) { (be->begin) (be, GNC_ID_PRICE, p); @@ -200,14 +200,14 @@ gnc_price_commit_edit (GNCPrice *p) /* See if there's a backend. If there is, invoke it. */ /* We may not be able to find the backend, so make not of that .. */ if (p->db) { - Backend *be; + QofBackend *be; be = xaccPriceDBGetBackend (p->db); if (be && be->commit) { - GNCBackendError errcode; + QofBackendError errcode; /* clear errors */ do { - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); } while (ERR_BACKEND_NO_ERR != errcode); /* if we haven't been able to call begin edit before, call it now */ @@ -218,7 +218,7 @@ gnc_price_commit_edit (GNCPrice *p) } (be->commit) (be, GNC_ID_PRICE, p); - errcode = xaccBackendGetError (be); + errcode = qof_backend_get_error (be); if (ERR_BACKEND_NO_ERR != errcode) { /* XXX hack alert FIXME implement price rollback */ @@ -226,7 +226,7 @@ gnc_price_commit_edit (GNCPrice *p) " handled yet. Return code=%d", errcode); /* push error back onto the stack */ - xaccBackendSetError (be, errcode); + qof_backend_set_error (be, errcode); } } p->not_saved = FALSE; @@ -1914,7 +1914,7 @@ gnc_pricedb_print_contents(GNCPriceDB *db, FILE *f) /* ==================================================================== */ -Backend * +QofBackend * xaccPriceDBGetBackend (GNCPriceDB *prdb) { if (!prdb || !prdb->book) return NULL; @@ -1951,7 +1951,7 @@ pricedb_mark_clean(QofBook *book) static QofObject pricedb_object_def = { - interface_version: GNC_OBJECT_VERSION, + interface_version: QOF_OBJECT_VERSION, name: GNC_ID_PRICEDB, type_label: "PriceDB", book_begin: pricedb_book_begin, diff --git a/src/engine/gnc-session-scm.c b/src/engine/gnc-session-scm.c index 8c245b38d4..a44dc605db 100644 --- a/src/engine/gnc-session-scm.c +++ b/src/engine/gnc-session-scm.c @@ -40,7 +40,7 @@ #include #include "gnc-engine.h" -#include "gnc-session.h" +#include "qofsession.h" #include "gnc-session-scm.h" //static short module = MOD_IO; @@ -58,21 +58,21 @@ gnc_session_scm_gui_cb_helper (const char *message, double percent) } void -gnc_session_scm_load (GNCSession *session) +gnc_session_scm_load (QofSession *session) { - gnc_session_load (session, gnc_session_scm_gui_cb_helper); + qof_session_load (session, gnc_session_scm_gui_cb_helper); } void -gnc_session_scm_save (GNCSession *session) +gnc_session_scm_save (QofSession *session) { - gnc_session_save (session, gnc_session_scm_gui_cb_helper); + qof_session_save (session, gnc_session_scm_gui_cb_helper); } gboolean -gnc_session_scm_export (GNCSession *tmp_session, GNCSession *real_session) +gnc_session_scm_export (QofSession *tmp_session, QofSession *real_session) { - return gnc_session_export(tmp_session, real_session, + return qof_session_export(tmp_session, real_session, gnc_session_scm_gui_cb_helper); } diff --git a/src/engine/gnc-session-scm.h b/src/engine/gnc-session-scm.h index 7a9eedcdf3..9bb7146d07 100644 --- a/src/engine/gnc-session-scm.h +++ b/src/engine/gnc-session-scm.h @@ -42,11 +42,12 @@ #include #include "guile-mappings.h" #include "gnc-engine.h" +#include "qofsession.h" -void gnc_session_scm_load (GNCSession *session); -gboolean gnc_session_scm_export (GNCSession *tmp_session, - GNCSession *real_session); -void gnc_session_scm_save (GNCSession *session); -void gnc_session_scm_set_callback (SCM percentage_cb); +void gnc_session_scm_load (QofSession *session); +gboolean gnc_session_scm_export (QofSession *tmp_session, + QofSession *real_session); +void gnc_session_scm_save (QofSession *session); +void gnc_session_scm_set_callback (SCM percentage_cb); #endif /* GNC_SESSION_SCM_H */ diff --git a/src/engine/gnc-session.h b/src/engine/gnc-session.h index a8f66806c7..6a8d7a61e9 100644 --- a/src/engine/gnc-session.h +++ b/src/engine/gnc-session.h @@ -1,250 +1,5 @@ -/********************************************************************\ - * gnc-session.h -- session access (connection to backend) * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License as * - * published by the Free Software Foundation; either version 2 of * - * the License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License* - * along with this program; if not, contact: * - * * - * Free Software Foundation Voice: +1-617-542-5942 * - * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * - * Boston, MA 02111-1307, USA gnu@gnu.org * - * * -\********************************************************************/ -/** @file gnc-session.h - * @brief Encapsulates a connection to a backednd (persistent store) - * - * FUNCTION: - * Encapsulates a connection to a GnuCash backend. That is, it - * manages the connection to a persistant data store; whereas - * the backend is the thing that performs the actual datastore - * access. - * - * This class provides several important services: - * - * 1) It resolves and loads the appropriate backend, based on - * the URL. - * - * 2) It reports backend errors (e.g. network errors, storage - * corruption errors) through a single, backend-independent - * API. - * - * 3) It reports non-error events received from the backend. - * - * 4) It helps manage global dataset locks. For example, for the - * file backend, the lock prevents multiple users from editing - * the same file at the same time, thus avoiding lost data due - * to race conditions. Thus, an open session implies that the - * associated file is locked. - * - * 5) Misc utilities, such as a search path for the file to be - * edited, and/or other URL resolution utilities. This should - * simplify install & maintenance problems for naive users who - * may not have a good grasp on what a file system is, or where - * they want to keep their data files. - * - * 6) In the future, this class is probably a good place to manage - * a portion of the user authentication process, and hold user - * credentials/cookies/keys/tokens. This is because at the - * coarsest level, authorization can happen at the datastore - * level: i.e. does this user even have the authority to connect - * to and open this datastore? - * - * A breif note about books & sessions: - * A book encapsulates the datasets manipulated by GnuCash. A book - * holds the actual data. By contrast, the session mediates the - * connection between a book (the thing that lives in virtual memory - * in the local process) and the datastore (the place where book - * data lives permanently, e.g., file, database). - * - * In the current design, a session may hold multiple books. For - * now, exactly what this means is somewhat vague, and code in - * various places makes some implicit assumptions: first, only - * one book is 'current' and open for editing. Next, its assumed - * that all of the books in a session are related in some way. - * i.e. that they are all earlier accounting periods of the - * currently open book. In particular, the backends probably - * make that assumption, in order to store the different accounting - * periods in a clump so that one can be found, given another. - * - * - * HISTORY: - * Created by Linas Vepstas December 1998 - * Copyright (c) 1998, 1999, 2001, 2002 Linas Vepstas - * Copyright (c) 2000 Dave Peticolas - */ +#include "qofsession.h" -#ifndef GNC_SESSION_H -#define GNC_SESSION_H - -#include "Backend.h" -#include "qofbook.h" - -/* PROTOTYPES ******************************************************/ - -typedef struct gnc_session_struct GNCSession; - -GNCSession * gnc_session_new (void); -void gnc_session_destroy (GNCSession *session); -GNCSession * gnc_get_current_session (void); -void gnc_set_current_session (GNCSession *session); - -/** The gnc_session_swap_data () method swaps the book of - * the two given sessions. It is useful - * for 'Save As' type functionality. */ -void gnc_session_swap_data (GNCSession *session_1, GNCSession *session_2); - -/** The gnc_session_begin () method begins a new session. - * It takes as an argument the book id. The book id must be a string - * in the form of a URI/URL. - * In the current implementation, the following URL's are supported - * -- File URI of the form - * "file:/home/somewhere/somedir/file.xac" - * The path part must be a valid path. The file-part must be - * a valid old-style-xacc or new-style-gnucash-format file. Paths - * may be relative or absolute. If the path is relative; that is, - * if the argument is "file:somefile.xac" then a sequence of - * search paths are checked for a file of this name. - * - * -- Postgres URI of the form - * "postgres://hostname.com/dbname" - * See the src/backend/postgres subdirectory for more info. - * - * -- RPC URI of the form rpc://hostname.com/rpcserver. - * - * The 'ignore_lock' argument, if set to TRUE, will cause this routine - * to ignore any global-datastore locks (e.g. file locks) that it finds. - * If set to FALSE, then file/database-global locks will be tested and - * obeyed. - * - * If the datastore exists, can be reached (e.g over the net), - * connected to, opened and read, and a lock can be obtained then - * a lock will be obtained. Note that multi-user datastores - * (e.g. the SQL backend) typically will not need to get a global - * lock, and thus, the user will not be locked out. That's the - * whole point of 'multi-user'. - * - * If the file/database doesn't exist, and the create_if_nonexistent - * flag is set to TRUE, then the database is created. - * - * If an error occurs, it will be pushed onto the session error - * stack, and that is where it should be examined. - */ -void gnc_session_begin (GNCSession *session, const char * book_id, - gboolean ignore_lock, gboolean create_if_nonexistent); - - -/** - * The gnc_session_load() method causes the QofBook to be made ready to - * to use with this URL/datastore. When the URL points at a file, - * then this routine would load the data from the file. With remote - * backends, e.g. network or SQL, this would load only enough data - * to make the book actually usable; it would not cause *all* of the - * data to be loaded. - */ -typedef void (*GNCPercentageFunc) (const char *message, double percent); -void gnc_session_load (GNCSession *session, - GNCPercentageFunc percentage_func); -gboolean gnc_session_export (GNCSession *tmp_session, - GNCSession *real_session, - GNCPercentageFunc percentage_func); - -/** The gnc_session_get_error() routine can be used to obtain the reason - * for any failure. Calling this routine returns the current error. - * - * The gnc_session_pop_error() routine can be used to obtain the reason - * for any failure. Calling this routine resets the error value. - * - * This routine allows an implementation of multiple error values, - * e.g. in a stack, where this routine pops the top value. The current - * implementation has a stack that is one-deep. - * - * See Backend.h for a listing of returned errors. - */ -GNCBackendError gnc_session_get_error (GNCSession *session); -const char * gnc_session_get_error_message(GNCSession *session); -GNCBackendError gnc_session_pop_error (GNCSession *session); - - -QofBook * gnc_session_get_book (GNCSession *session); -void gnc_session_set_book (GNCSession *session, QofBook *book); - -/** The gnc_session_get_file_path() routine returns the fully-qualified file - * path for the session. That is, if a relative or partial filename - * was for the session, then it had to have been fully resolved to - * open the session. This routine returns the result of this resolution. - * The path is always guarenteed to reside in the local file system, - * even if the session itself was opened as a URL. (currently, the - * filepath is derived from the url by substituting commas for - * slashes). - * - * The gnc_session_get_url() routine returns the url that was opened. - * URL's for local files take the form of - * file:/some/where/some/file.gml - */ -const char * gnc_session_get_file_path (GNCSession *session); -const char * gnc_session_get_url (GNCSession *session); - -/** - * The gnc_session_not_saved() subroutine will return TRUE - * if any data in the session hasn't been saved to long-term storage. - */ -gboolean gnc_session_not_saved(GNCSession *session); - -/** FIXME: This isn't as thorough as we might want it to be... */ -gboolean gnc_session_save_may_clobber_data (GNCSession *session); - -/** The gnc_session_save() method will commit all changes that have been - * made to the session. For the file backend, this is nothing - * more than a write to the file of the current AccountGroup & etc. - * For the SQL backend, this is typically a no-op (since all data - * has already been written out to the database. - * - * The gnc_session_end() method will release the session lock. For the - * file backend, it will *not* save the account group to a file. Thus, - * this method acts as an "abort" or "rollback" primitive. However, - * for other backends, such as the sql backend, the data would have - * been written out before this, and so this routines wouldn't - * roll-back anything; it would just shut the connection. - */ -void gnc_session_save (GNCSession *session, - GNCPercentageFunc percentage_func); -void gnc_session_end (GNCSession *session); - -/** The gnc_session_events_pending() method will return TRUE if the backend - * has pending events which must be processed to bring the engine - * up to date with the backend. - * - * The gnc_session_process_events() method will process any events indicated - * by the gnc_session_events_pending() method. It returns TRUE if the - * engine was modified while engine events were suspended. - */ -gboolean gnc_session_events_pending (GNCSession *session); -gboolean gnc_session_process_events (GNCSession *session); - -/** The xaccResolveFilePath() routine is a utility that will accept - * a fragmentary filename as input, and resolve it into a fully - * qualified path in the file system, i.e. a path that begins with - * a leading slash. First, the current working directory is - * searched for the file. Next, the directory $HOME/.gnucash/data, - * and finally, a list of other (configurable) paths. If the file - * is not found, then the path $HOME/.gnucash/data is used. If - * $HOME is not defined, then the current working directory is - * used. - */ -char * xaccResolveFilePath (const char * filefrag); -char * xaccResolveURL (const char * pathfrag); - -/** Run the RPC Server */ -void gnc_run_rpc_server (void); - -#endif /* GNC_SESSION_H */ +#define gnc_get_current_session qof_session_get_current_session +#define gnc_session_get_url qof_session_get_url diff --git a/src/engine/gw-engine-spec.scm b/src/engine/gw-engine-spec.scm index a2701fd946..63d926be7e 100644 --- a/src/engine/gw-engine-spec.scm +++ b/src/engine/gw-engine-spec.scm @@ -24,10 +24,10 @@ "#include \n" "#include \n" "#include \n" - "#include \n" "#include \n" + "#include \n" "#include \n" - "#include \n" + "#include \n" "#include \n" "#include \n" "#include \n" @@ -101,7 +101,7 @@ (gw:wrap-as-wct ws ' "AccountGroup*" "const AccountGroup*") (gw:wrap-as-wct ws ' "QofBook*" "const QofBook*") (gw:wrap-as-wct ws ' "GNCLot*" "const GNCLot*") -(gw:wrap-as-wct ws ' "GNCSession*" "const GNCSession**") +(gw:wrap-as-wct ws ' "QofSession*" "const QofSession**") (gw:wrap-as-wct ws ' "Split*" "const Split*") (gw:wrap-as-wct ws ' "Transaction*" "const Transaction*") (gw:wrap-as-wct ws ' "gnc_commodity*" "const gnc_commodity*") @@ -214,7 +214,7 @@ (gw:enum-add-value! we "CREDITLINE" 'credit-line) #t) -(let ((we (gw:wrap-enumeration ws ' "GNCBackendError"))) +(let ((we (gw:wrap-enumeration ws ' "QofBackendError"))) (gw:enum-add-value! we "ERR_BACKEND_NO_ERR" 'no-err) (gw:enum-add-value! we "ERR_BACKEND_NO_BACKEND" 'no-backend) @@ -1367,20 +1367,20 @@ when no longer needed.") to time t.") ;;=========== -;; GNCSession +;; QofSession (gw:wrap-function ws 'gnc:session-new ' - "gnc_session_new" '() + "qof_session_new" '() "Create a new session.") (gw:wrap-function ws 'gnc:session-destroy ' - "gnc_session_destroy" + "qof_session_destroy" '(( session)) "Destroy the given session.") @@ -1388,7 +1388,7 @@ to time t.") ws 'gnc:session-get-book ' - "gnc_session_get_book" + "qof_session_get_book" '(( session)) "Get the book of the given session.") @@ -1396,7 +1396,7 @@ to time t.") ws 'gnc:session-begin ' - "gnc_session_begin" + "qof_session_begin" '(( session) (( caller-owned const) id) ( ignore-lock?) @@ -1441,7 +1441,7 @@ argument between 0 and 100 (inclusive).") ws 'gnc:session-end ' - "gnc_session_end" + "qof_session_end" '(( session)) "Indicate you're finished with the session.") @@ -1481,7 +1481,7 @@ argument between 0 and 100 (inclusive).") ws 'gnc:session-get-error ' - "gnc_session_get_error" + "qof_session_get_error" '(( session)) "Check for a pending error.") @@ -1489,7 +1489,7 @@ argument between 0 and 100 (inclusive).") ws 'gnc:session-get-url '( callee-owned const) - "gnc_session_get_url" + "qof_session_get_url" '(( session)) "Return the URL of the opened session.") @@ -1497,7 +1497,7 @@ argument between 0 and 100 (inclusive).") ws 'gnc:session-pop-error ' - "gnc_session_pop_error" + "qof_session_pop_error" '(( session)) "Remove an error, if any, from the error stack.") diff --git a/src/engine/BackendP.h b/src/engine/qofbackend-p.h similarity index 87% rename from src/engine/BackendP.h rename to src/engine/qofbackend-p.h index 2313ab8f42..4d5dbf5bab 100644 --- a/src/engine/BackendP.h +++ b/src/engine/qofbackend-p.h @@ -1,5 +1,5 @@ /********************************************************************\ - * Backend.h -- private api for engine Backend * + * qofbackend-p.h -- private api for data storage backend * * * * Copyright (c) 2000, 2001 Linas Vepstas * * * @@ -24,7 +24,7 @@ /* * FILE: - * BackendP.h + * qofbackend-p.h * * FUNCTION: * Pseudo-object defining how the engine can interact with different @@ -42,10 +42,10 @@ #include "config.h" -#include "Backend.h" -#include "gnc-session.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofquery.h" +#include "qofsession.h" /* * The session_begin() routine gives the backend a second initialization @@ -168,7 +168,7 @@ * a stack) of all the errors that have occurred. * * For support of book partitioning, use special "Book" begin_edit() - * and commit_edit() GNC_ID types. + * and commit_edit() QOF_ID types. * * Call the book begin() at the begining of a book partitioning. A * 'partitioning' is the splitting off of a chunk of the current @@ -223,36 +223,36 @@ * */ -struct backend_s +struct _QofBackend { - void (*session_begin) (Backend *be, - GNCSession *session, + void (*session_begin) (QofBackend *be, + QofSession *session, const char *book_id, gboolean ignore_lock, gboolean create_if_nonexistent); - void (*session_end) (Backend *); - void (*destroy_backend) (Backend *); + void (*session_end) (QofBackend *); + void (*destroy_backend) (QofBackend *); - void (*load) (Backend *, QofBook *); + void (*load) (QofBackend *, QofBook *); - void (*begin) (Backend *, QofIdTypeConst, gpointer); - void (*commit) (Backend *, QofIdTypeConst, gpointer); - void (*rollback) (Backend *, QofIdTypeConst, gpointer); + void (*begin) (QofBackend *, QofIdTypeConst, gpointer); + void (*commit) (QofBackend *, QofIdTypeConst, gpointer); + void (*rollback) (QofBackend *, QofIdTypeConst, gpointer); - gpointer (*compile_query) (Backend *, QofQuery *); - void (*free_query) (Backend *, gpointer); - void (*run_query) (Backend *, gpointer); + gpointer (*compile_query) (QofBackend *, QofQuery *); + void (*free_query) (QofBackend *, gpointer); + void (*run_query) (QofBackend *, gpointer); - void (*sync) (Backend *, QofBook *); + void (*sync) (QofBackend *, QofBook *); - gint64 (*counter) (Backend *, const char *counter_name); + gint64 (*counter) (QofBackend *, const char *counter_name); - gboolean (*events_pending) (Backend *be); - gboolean (*process_events) (Backend *be); + gboolean (*events_pending) (QofBackend *be); + gboolean (*process_events) (QofBackend *be); - GNCBePercentageFunc percentage; + QofBePercentageFunc percentage; - GNCBackendError last_err; + QofBackendError last_err; char * error_msg; /* XXX price_lookup should be removed during the redesign @@ -260,44 +260,37 @@ struct backend_s * the generic query mechanism. * * Note the correct signature for this call is - * void (*price_lookup) (Backend *, GNCPriceLookup *); + * void (*price_lookup) (QofBackend *, GNCPriceLookup *); * we use gpointer to avoid an unwanted include file dependency. */ - void (*price_lookup) (Backend *, gpointer); + void (*price_lookup) (QofBackend *, gpointer); /* XXX Export should really _NOT_ be here, but is left here for now. * I'm not sure where this should be going to. It should be * removed ASAP. */ - void (*export) (Backend *, QofBook *); + void (*export) (QofBackend *, QofBook *); }; /* - * The xaccBackendSetError() routine pushes an error code onto the error + * The qof_backend_set_error() routine pushes an error code onto the error * stack. (FIXME: the stack is 1 deep in current implementation). * - * The xaccBackendGetError() routine pops an error code off the error + * The qof_backend_get_error() routine pops an error code off the error * stack. * - * The xaccBackendSetMessage() assigns a string to the backend error + * The qof_backend_set_message() assigns a string to the backend error * message. * - * The xaccBackendGetMessage() pops the error message string from + * The qof_backend_get_message() pops the error message string from * the Backend. This string should be freed with g_free(). */ -void xaccBackendSetError (Backend *be, GNCBackendError err); -GNCBackendError xaccBackendGetError (Backend *be); -void xaccBackendSetMessage(Backend *be, const char *format, ...); -char * xaccBackendGetMessage(Backend *be); +void qof_backend_set_error (QofBackend *be, QofBackendError err); +QofBackendError qof_backend_get_error (QofBackend *be); +void qof_backend_set_message(QofBackend *be, const char *format, ...); +char * qof_backend_get_message(QofBackend *be); -/* - * The xaccQofBookGetBackend() subroutine will find the - * persistent-data storage backend associated with - * this book. - */ -Backend * xaccQofBookGetBackend (QofBook *book); - -void xaccInitBackend(Backend *be); +void qof_backend_init(QofBackend *be); #endif /* QOF_BACKEND_P_H */ diff --git a/src/engine/Backend.c b/src/engine/qofbackend.c similarity index 88% rename from src/engine/Backend.c rename to src/engine/qofbackend.c index 534c6e2914..37d872c462 100644 --- a/src/engine/Backend.c +++ b/src/engine/qofbackend.c @@ -1,5 +1,5 @@ /********************************************************************\ - * Backend.c -- utility routines for dealing with the data backend * + * qofbackend.c -- utility routines for dealing with the data backend * * Copyright (C) 2000 Linas Vepstas * * * * This program is free software; you can redistribute it and/or * @@ -25,8 +25,8 @@ #include #include -#include "Backend.h" -#include "BackendP.h" +#include "qofbackend.h" +#include "qofbackend-p.h" /* static short module = MOD_ENGINE; */ @@ -35,7 +35,7 @@ \********************************************************************/ void -xaccBackendSetError (Backend *be, GNCBackendError err) +qof_backend_set_error (QofBackend *be, QofBackendError err) { if (!be) return; @@ -44,10 +44,10 @@ xaccBackendSetError (Backend *be, GNCBackendError err) be->last_err = err; } -GNCBackendError -xaccBackendGetError (Backend *be) +QofBackendError +qof_backend_get_error (QofBackend *be) { - GNCBackendError err; + QofBackendError err; if (!be) return ERR_BACKEND_NO_BACKEND; /* use 'stack-pop' semantics */ @@ -57,7 +57,8 @@ xaccBackendGetError (Backend *be) } void -xaccBackendSetMessage (Backend *be, const char *format, ...) { +qof_backend_set_message (QofBackend *be, const char *format, ...) +{ va_list args; char * buffer; @@ -75,7 +76,8 @@ xaccBackendSetMessage (Backend *be, const char *format, ...) { /* This should always return a valid char * */ char * -xaccBackendGetMessage (Backend *be) { +qof_backend_get_message (QofBackend *be) +{ char * msg; if (!be) return g_strdup("ERR_BACKEND_NO_BACKEND"); @@ -86,7 +88,7 @@ xaccBackendGetMessage (Backend *be) { * NULL. This is necessary, because the Backends don't seem to * have a destroy_backend function to take care if freeing stuff * up. The calling function should free the copy. - * Also, this is consistent with the xaccBackendGetError() popping. + * Also, this is consistent with the qof_backend_get_error() popping. */ msg = be->error_msg; @@ -97,7 +99,7 @@ xaccBackendGetMessage (Backend *be) { /***********************************************************************/ /* Get a clean backend */ void -xaccInitBackend(Backend *be) +qof_backend_init(QofBackend *be) { be->session_begin = NULL; be->session_end = NULL; diff --git a/src/engine/Backend.h b/src/engine/qofbackend.h similarity index 92% rename from src/engine/Backend.h rename to src/engine/qofbackend.h index 867096ba7e..32c75f9744 100644 --- a/src/engine/Backend.h +++ b/src/engine/qofbackend.h @@ -1,4 +1,5 @@ /********************************************************************\ + * qofbackend.h: api for data storage backend * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation; either version 2 of * @@ -19,8 +20,8 @@ \********************************************************************/ /** @addtogroup Engine @{ */ -/** @file Backend.h - @brief api for engine Backend +/** @file qofbackend.h + @brief api for data storage Backend * The 'backend' is a pseudo-object providing an interface between the engine and a persistant data store (e.g. a server, a database, or @@ -31,13 +32,13 @@ @author Copyright (C) 2000-2001 Linas Vepstas */ -#ifndef XACC_BACKEND_H -#define XACC_BACKEND_H +#ifndef QOF_BACKEND_H +#define QOF_BACKEND_H #include "config.h" /** \brief The errors that can be reported to the GUI & other front-end users -\warning If you modify GNCBackendError, please update src/scm/gnc.gwp */ +\warning If you modify QofBackendError, please update src/scm/gnc.gwp */ typedef enum { ERR_BACKEND_NO_ERR = 0, ERR_BACKEND_NO_BACKEND, /**< Backend * pointer was null the err routine @@ -87,7 +88,7 @@ typedef enum { ERR_RPC_BAD_VERSION, /**< RPC Version Mismatch */ ERR_RPC_FAILED, /**< Operation failed */ ERR_RPC_NOT_ADDED, /**< object not added */ -} GNCBackendError; +} QofBackendError; /** \brief Pseudo-object providing an interface between the * engine and a persistant data store (e.g. a server, a database, @@ -97,10 +98,10 @@ typedef enum { * engine. The backend can, however, report errors to the GUI & other * front-end users. */ -typedef struct backend_s Backend; +typedef struct _QofBackend QofBackend; /** \brief DOCUMENT ME! */ -typedef void (*GNCBePercentageFunc) (const char *message, double percent); +typedef void (*QofBePercentageFunc) (const char *message, double percent); -#endif /* XACC_BACKEND_H */ +#endif /* QOF_BACKEND_H */ /**@}*/ diff --git a/src/engine/qofbook-p.h b/src/engine/qofbook-p.h index dd884ea77b..c1df50da43 100644 --- a/src/engine/qofbook-p.h +++ b/src/engine/qofbook-p.h @@ -30,8 +30,8 @@ #ifndef QOF_BOOK_P_H #define QOF_BOOK_P_H -#include "Backend.h" #include "kvp_frame.h" +#include "qofbackend.h" #include "qofbook.h" #include "qofid.h" @@ -72,7 +72,7 @@ struct _QofBook * not books. So the pointer below "really shouldn't be here", * except that it provides a nice convenience, avoiding a lookup * from the session. Better solutions welcome ... */ - Backend *backend; + QofBackend *backend; /* -------------------------------------------------------------- */ /* Backend private expansion data */ @@ -90,7 +90,7 @@ struct _QofBook void qof_book_set_guid(QofBook *book, GUID guid); void qof_book_set_schedxactions( QofBook *book, GList *newList ); -void qof_book_set_backend (QofBook *book, Backend *be); +void qof_book_set_backend (QofBook *book, QofBackend *be); /* The qof_book_mark_saved() routine marks the book as having been * saved (to a file, to a database). Used by backends to mark the diff --git a/src/engine/qofbook.c b/src/engine/qofbook.c index 7a2cb048d7..e12ed6f223 100644 --- a/src/engine/qofbook.c +++ b/src/engine/qofbook.c @@ -40,11 +40,10 @@ #include -#include "Backend.h" -#include "BackendP.h" #include "gnc-event.h" #include "gnc-event-p.h" #include "gnc-trace.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofid-p.h" @@ -167,8 +166,8 @@ qof_book_get_entity_table (QofBook *book) return book->entity_table; } -Backend * -xaccQofBookGetBackend (QofBook *book) +QofBackend * +qof_book_get_backend (QofBook *book) { if (!book) return NULL; return book->backend; @@ -190,20 +189,13 @@ qof_book_set_guid (QofBook *book, GUID uid) } void -qof_book_set_backend (QofBook *book, Backend *be) +qof_book_set_backend (QofBook *book, QofBackend *be) { if (!book) return; ENTER ("book=%p be=%p", book, be); book->backend = be; } -gpointer qof_book_get_backend (QofBook *book) -{ - if (!book) return NULL; - return (gpointer)book->backend; -} - - void qof_book_kvp_changed (QofBook *book) { if (!book) return; @@ -241,7 +233,7 @@ qof_book_get_data (QofBook *book, const char *key) gint64 qof_book_get_counter (QofBook *book, const char *counter_name) { - Backend *be; + QofBackend *be; kvp_frame *kvp; kvp_value *value; gint64 counter; diff --git a/src/engine/qofbook.h b/src/engine/qofbook.h index 87a076f86b..0092c7ce93 100644 --- a/src/engine/qofbook.h +++ b/src/engine/qofbook.h @@ -36,6 +36,7 @@ #include #include "qofid.h" +#include "qofbackend.h" #include "kvp_frame.h" /** @brief Encapsulates all the information about a dataset @@ -75,7 +76,8 @@ void qof_book_set_data (QofBook *book, const char *key, gpointer data); gpointer qof_book_get_data (QofBook *book, const char *key); /** DOCUMENT ME! */ -gpointer qof_book_get_backend (QofBook *book); +QofBackend *qof_book_get_backend (QofBook *book); +void qof_book_set_backend (QofBook *book, QofBackend *); /** qof_book_not_saved() will return TRUE if any * data in the book hasn't been saved to long-term storage. diff --git a/src/engine/qofobject-p.h b/src/engine/qofobject-p.h index 0235f65939..b607952442 100644 --- a/src/engine/qofobject-p.h +++ b/src/engine/qofobject-p.h @@ -1,5 +1,5 @@ /********************************************************************\ - * gncObjectP.h -- the Core Object Registration/Lookup Interface * + * qofobject-p.h -- the private Object Registration/Lookup Interface * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation; either version 2 of * @@ -20,17 +20,17 @@ \********************************************************************/ /** @addtogroup Engine @{ */ -/** @file gncObject.h +/** @file qofobject-p.h * @breif the Core Object Registration/Lookup Private Interface * * @author Copyright (c) 2001,2002, Derek Atkins */ -#ifndef GNC_OBJECTP_H_ -#define GNC_OBJECTP_H_ +#ifndef QOF_OBJECT_P_H_ +#define QOF_OBJECT_P_H_ -#include "gncObject.h" #include "qofbook.h" +#include "qofobject.h" /* Initialize the object registration subsystem */ void qof_object_initialize (void); @@ -44,5 +44,5 @@ void qof_object_book_end (QofBook *book); gboolean qof_object_is_dirty (QofBook *book); void qof_object_mark_clean (QofBook *book); -#endif /* GNC_OBJECTP_H_ */ +#endif /* QOF_OBJECT_P_H_ */ /** @} */ diff --git a/src/engine/qofobject.c b/src/engine/qofobject.c index 0ee5a31a7a..dca54d6795 100644 --- a/src/engine/qofobject.c +++ b/src/engine/qofobject.c @@ -190,7 +190,7 @@ gboolean qof_object_register (const QofObject *object) g_return_val_if_fail (object_is_initialized, FALSE); if (!object) return FALSE; - g_return_val_if_fail (object->interface_version == GNC_OBJECT_VERSION, FALSE); + g_return_val_if_fail (object->interface_version == QOF_OBJECT_VERSION, FALSE); if (g_list_index (object_modules, (gpointer)object) == -1) object_modules = g_list_prepend (object_modules, (gpointer)object); diff --git a/src/engine/qofobject.h b/src/engine/qofobject.h index a738ed86fb..dc80a360f1 100644 --- a/src/engine/qofobject.h +++ b/src/engine/qofobject.h @@ -35,48 +35,48 @@ * interface. Only object modules compiled against this version * of the interface will load properly */ -#define GNC_OBJECT_VERSION 1 +#define QOF_OBJECT_VERSION 1 typedef struct _QofObject QofObject; typedef void (*QofForeachTypeCB) (QofObject *type, gpointer user_data); typedef void (*QofForeachBackendTypeCB) (QofIdTypeConst type, - gpointer backend_data, - gpointer user_data); + gpointer backend_data, + gpointer user_data); /* This is the Object Object descriptor */ struct _QofObject { - gint interface_version; /* of this object interface */ - QofIdType name; /* the Object's GNC_ID */ - const char * type_label; /* "Printable" type-label string */ + gint interface_version; /* of this object interface */ + QofIdType name; /* the Object's QOF_ID */ + const char * type_label; /* "Printable" type-label string */ /* book_begin is called from within the Book routines to create * module-specific hooks in a book whenever a book is created. * book_end is called when the book is being closed, to clean * up (and free memory). */ - void (*book_begin)(QofBook *); - void (*book_end)(QofBook *); + void (*book_begin)(QofBook *); + void (*book_end)(QofBook *); /* Determine if there are any dirty items in this book */ - gboolean (*is_dirty)(QofBook *); + gboolean (*is_dirty)(QofBook *); /* Mark this object's book clean (for after a load) */ - void (*mark_clean)(QofBook *); + void (*mark_clean)(QofBook *); /* foreach() is used to execute a callback over each object * stored in the particular book */ - void (*foreach)(QofBook *, QofEntityForeachCB, gpointer); + void (*foreach)(QofBook *, QofEntityForeachCB, gpointer); /* Given a particular object, return a printable string */ - const char * (*printable)(gpointer obj); + const char * (*printable)(gpointer obj); }; void qof_object_foreach_type (QofForeachTypeCB cb, gpointer user_data); void qof_object_foreach (QofIdTypeConst type_name, QofBook *book, - QofEntityForeachCB cb, gpointer user_data); + QofEntityForeachCB cb, gpointer user_data); const char * qof_object_printable (QofIdTypeConst type_name, gpointer obj); @@ -97,15 +97,15 @@ const QofObject * qof_object_lookup (QofIdTypeConst type_name); /** Register and lookup backend-specific data for this particular object */ gboolean qof_object_register_backend (QofIdTypeConst type_name, - const char *backend_name, - gpointer be_data); + const char *backend_name, + gpointer be_data); gpointer qof_object_lookup_backend (QofIdTypeConst type_name, - const char *backend_name); + const char *backend_name); void qof_object_foreach_backend (const char *backend_name, - QofForeachBackendTypeCB cb, - gpointer user_data); + QofForeachBackendTypeCB cb, + gpointer user_data); #endif /* QOF_OBJECT_H_ */ /** @} */ diff --git a/src/engine/qofquery.c b/src/engine/qofquery.c index cd5a32fc54..67d6a9212b 100644 --- a/src/engine/qofquery.c +++ b/src/engine/qofquery.c @@ -30,8 +30,8 @@ #include #include "gnc-engine-util.h" -#include "BackendP.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" #include "qofobject.h" @@ -506,7 +506,7 @@ static void compile_terms (QofQuery *q) /* Now compile the backend instances */ for (node = q->books; node; node = node->next) { QofBook *book = node->data; - Backend *be = book->backend; + QofBackend *be = book->backend; if (be && be->compile_query) { gpointer result = (be->compile_query)(be, q); @@ -568,7 +568,7 @@ static gboolean query_free_compiled (gpointer key, gpointer value, gpointer not_used) { QofBook* book = key; - Backend* be = book->backend; + QofBackend* be = book->backend; if (be && be->free_query) (be->free_query)(be, value); @@ -690,7 +690,7 @@ GList * qof_query_run (QofQuery *q) /* For each book */ for (node=q->books; node; node=node->next) { QofBook *book = node->data; - Backend *be = book->backend; + QofBackend *be = book->backend; /* run the query in the backend */ if (be) { @@ -1260,7 +1260,8 @@ gboolean qof_query_sort_get_increasing (QofQuerySort *qs) return qs->increasing; } -static gboolean gncQueryTermEqual (QofQueryTerm_t qt1, QofQueryTerm_t qt2) +static gboolean +qof_query_term_equal (QofQueryTerm_t qt1, QofQueryTerm_t qt2) { if (qt1 == qt2) return TRUE; if (!qt1 || !qt2) return FALSE; @@ -1270,7 +1271,8 @@ static gboolean gncQueryTermEqual (QofQueryTerm_t qt1, QofQueryTerm_t qt2) return qof_query_core_predicate_equal (qt1->pdata, qt2->pdata); } -static gboolean gncQuerySortEqual (QofQuerySort* qs1, QofQuerySort* qs2) +static gboolean +qof_query_sort_equal (QofQuerySort* qs1, QofQuerySort* qs2) { if (qs1 == qs2) return TRUE; if (!qs1 || !qs2) return FALSE; @@ -1304,15 +1306,15 @@ gboolean qof_query_equal (QofQuery *q1, QofQuery *q2) if (g_list_length (and1) != g_list_length (and2)) return FALSE; for ( ; and1; and1 = and1->next, and2 = and2->next) - if (!gncQueryTermEqual (and1->data, and2->data)) + if (!qof_query_term_equal (and1->data, and2->data)) return FALSE; } - if (!gncQuerySortEqual (&(q1->primary_sort), &(q2->primary_sort))) + if (!qof_query_sort_equal (&(q1->primary_sort), &(q2->primary_sort))) return FALSE; - if (!gncQuerySortEqual (&(q1->secondary_sort), &(q2->secondary_sort))) + if (!qof_query_sort_equal (&(q1->secondary_sort), &(q2->secondary_sort))) return FALSE; - if (!gncQuerySortEqual (&(q1->tertiary_sort), &(q2->tertiary_sort))) + if (!qof_query_sort_equal (&(q1->tertiary_sort), &(q2->tertiary_sort))) return FALSE; return TRUE; diff --git a/src/engine/qofquerycore.c b/src/engine/qofquerycore.c index 01b6833d52..650fbc8272 100644 --- a/src/engine/qofquerycore.c +++ b/src/engine/qofquerycore.c @@ -36,7 +36,7 @@ static short module = MOD_QUERY; typedef void (*QueryPredDataFree) (QofQueryPredData *pdata); /* A function to copy a query's predicate data */ -typedef QofQueryPredData *(*QueryPredicateCopy) (QofQueryPredData *pdata); +typedef QofQueryPredData *(*QueryPredicateCopyFunc) (QofQueryPredData *pdata); /* A function to take the object, apply the get_fcn, and return * a printable string. Note that this QofAccessFunc function should @@ -48,27 +48,27 @@ typedef char * (*QueryToString) (gpointer object, QofAccessFunc get_fcn); /* A function to test for equality of predicate data */ typedef gboolean (*QueryPredicateEqual) (QofQueryPredData *p1, - QofQueryPredData *p2); + QofQueryPredData *p2); /* This function registers a new Core Object with the QofQuery * subsystem. It maps the "core_name" object to the given * query_predicate, predicate_copy, and predicate_data_free functions. */ -static void gncQueryRegisterCoreObject (char const *type_name, - QofQueryPredicateFunc pred, - QofCompareFunc comp, - QueryPredicateCopy copy, - QueryPredDataFree pd_free, - QueryToString to_string, - QueryPredicateEqual pred_equal); +static void qof_query_register_core_object (char const *type_name, + QofQueryPredicateFunc pred, + QofCompareFunc comp, + QueryPredicateCopyFunc copy, + QueryPredDataFree pd_free, + QueryToString to_string, + QueryPredicateEqual pred_equal); /* An example: * - * gncQueryRegisterCoreObject (QOF_QUERYCORE_STRING, string_match_predicate, - * string_compare_fcn, string_free_pdata, - * string_print_fcn, pred_equal_fcn); + * qof_query_register_core_object (QOF_QUERYCORE_STRING, string_match_predicate, + * string_compare_fcn, string_free_pdata, + * string_print_fcn, pred_equal_fcn); */ -static QueryPredicateCopy gncQueryCoreGetCopy (char const *type); +static QueryPredicateCopyFunc gncQueryCoreGetCopy (char const *type); static QueryPredDataFree gncQueryCoreGetPredFree (char const *type); /* Core Type Predicate helpers */ @@ -114,23 +114,24 @@ static GHashTable *predEqualTable = NULL; #define COMPARE_ERROR -3 #define PREDICATE_ERROR -2 + #define VERIFY_PDATA(str) { \ - g_return_if_fail (pd != NULL); \ - g_return_if_fail (pd->type_name == str || \ - !safe_strcmp (str, pd->type_name)); \ + g_return_if_fail (pd != NULL); \ + g_return_if_fail (pd->type_name == str || \ + !safe_strcmp (str, pd->type_name)); \ } #define VERIFY_PDATA_R(str) { \ - g_return_val_if_fail (pd != NULL, NULL); \ - g_return_val_if_fail (pd->type_name == str || \ - !safe_strcmp (str, pd->type_name), \ - NULL); \ + g_return_val_if_fail (pd != NULL, NULL); \ + g_return_val_if_fail (pd->type_name == str || \ + !safe_strcmp (str, pd->type_name), \ + NULL); \ } #define VERIFY_PREDICATE(str) { \ - g_return_val_if_fail (get_fcn != NULL, PREDICATE_ERROR); \ - g_return_val_if_fail (pd != NULL, PREDICATE_ERROR); \ - g_return_val_if_fail (pd->type_name == str || \ - !safe_strcmp (str, pd->type_name), \ - PREDICATE_ERROR); \ + g_return_val_if_fail (get_fcn != NULL, PREDICATE_ERROR); \ + g_return_val_if_fail (pd != NULL, PREDICATE_ERROR); \ + g_return_val_if_fail (pd->type_name == str || \ + !safe_strcmp (str, pd->type_name), \ + PREDICATE_ERROR); \ } /********************************************************************/ @@ -139,7 +140,7 @@ static GHashTable *predEqualTable = NULL; /* QOF_QUERYCORE_STRING */ static int string_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { query_string_t pdata = (query_string_t) pd; const char *s; @@ -177,7 +178,7 @@ static int string_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int string_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { const char *s1, *s2; g_return_val_if_fail (a && b && get_fcn, COMPARE_ERROR); @@ -212,7 +213,7 @@ static QofQueryPredData *string_copy_predicate (QofQueryPredData *pd) VERIFY_PDATA_R (query_string_type); return qof_query_string_predicate (pd->how, pdata->matchstring, pdata->options, - pdata->is_regex); + pdata->is_regex); } static gboolean string_predicate_equal (QofQueryPredData *p1, @@ -227,8 +228,8 @@ QofQueryPredData *p2) } QofQueryPredData *qof_query_string_predicate (QofQueryCompare how, - char *str, QofStringMatch options, - gboolean is_regex) + char *str, QofStringMatch options, + gboolean is_regex) { query_string_t pdata; @@ -285,7 +286,7 @@ static int date_compare (Timespec ta, Timespec tb, QofDateMatch options) } static int date_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { query_date_t pdata = (query_date_t)pd; Timespec objtime; @@ -316,7 +317,7 @@ static int date_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int date_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { Timespec ta, tb; @@ -358,7 +359,7 @@ static gboolean date_predicate_equal (QofQueryPredData *p1, QofQueryPredData *p2 QofQueryPredData * qof_query_date_predicate (QofQueryCompare how, - QofDateMatch options, Timespec date) + QofDateMatch options, Timespec date) { query_date_t pdata; @@ -383,7 +384,7 @@ static char * date_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_NUMERIC */ static int numeric_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData* pd) + QofQueryPredData* pd) { query_numeric_t pdata = (query_numeric_t)pd; gnc_numeric obj_val; @@ -408,10 +409,10 @@ static int numeric_match_predicate (gpointer object, QofAccessFunc get_fcn, gnc_numeric cmp_val = gnc_numeric_create (1, 10000); compare = (gnc_numeric_compare (gnc_numeric_abs - (gnc_numeric_sub (gnc_numeric_abs (obj_val), - gnc_numeric_abs (pdata->amount), - 100000, GNC_RND_ROUND)), - cmp_val) < 0); + (gnc_numeric_sub (gnc_numeric_abs (obj_val), + gnc_numeric_abs (pdata->amount), + 100000, GNC_RND_ROUND)), + cmp_val) < 0); } else compare = gnc_numeric_compare (gnc_numeric_abs (obj_val), pdata->amount); @@ -435,7 +436,7 @@ static int numeric_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int numeric_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { gnc_numeric va, vb; @@ -474,8 +475,8 @@ numeric_predicate_equal (QofQueryPredData *p1, QofQueryPredData *p2) QofQueryPredData * qof_query_numeric_predicate (QofQueryCompare how, - QofNumericMatch options, - gnc_numeric value) + QofNumericMatch options, + gnc_numeric value) { query_numeric_t pdata; pdata = g_new0 (query_numeric_def, 1); @@ -503,7 +504,7 @@ static char * debcred_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_GUID */ static int guid_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { query_guid_t pdata = (query_guid_t)pd; GList *node, *o_list; @@ -523,9 +524,9 @@ static int guid_match_predicate (gpointer object, QofAccessFunc get_fcn, /* See if this GUID matches the object's guid */ for (o_list = object; o_list; o_list = o_list->next) { - guid = ((query_guid_getter)get_fcn) (o_list->data); - if (guid_equal (node->data, guid)) - break; + guid = ((query_guid_getter)get_fcn) (o_list->data); + if (guid_equal (node->data, guid)) + break; } /* @@ -533,7 +534,7 @@ static int guid_match_predicate (gpointer object, QofAccessFunc get_fcn, * a match. Therefore break out now, the match has failed. */ if (o_list == NULL) - break; + break; } /* @@ -558,13 +559,13 @@ static int guid_match_predicate (gpointer object, QofAccessFunc get_fcn, /* Search the predicate data for a match */ for (node2 = pdata->guids; node2; node2 = node2->next) { - if (guid_equal (node->data, node2->data)) - break; + if (guid_equal (node->data, node2->data)) + break; } /* Check to see if we found a match. If so, break now */ if (node2 != NULL) - break; + break; } g_list_free(o_list); @@ -584,7 +585,7 @@ static int guid_match_predicate (gpointer object, QofAccessFunc get_fcn, guid = ((query_guid_getter)get_fcn) (object); for (node = pdata->guids; node; node = node->next) { if (guid_equal (node->data, guid)) - break; + break; } } @@ -663,7 +664,7 @@ qof_query_guid_predicate (QofGuidMatch options, GList *guids) /* QOF_QUERYCORE_INT32 */ static int int32_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { gint32 val; query_int32_t pdata = (query_int32_t)pd; @@ -692,7 +693,7 @@ static int int32_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int int32_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { gint32 v1, v2; g_return_val_if_fail (a && b && get_fcn, COMPARE_ERROR); @@ -750,7 +751,7 @@ static char * int32_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_INT64 */ static int int64_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { gint64 val; query_int64_t pdata = (query_int64_t)pd; @@ -779,7 +780,7 @@ static int int64_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int int64_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { gint64 v1, v2; g_return_val_if_fail (a && b && get_fcn, COMPARE_ERROR); @@ -837,7 +838,7 @@ static char * int64_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_DOUBLE */ static int double_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { double val; query_double_t pdata = (query_double_t)pd; @@ -866,7 +867,7 @@ static int double_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int double_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { double v1, v2; g_return_val_if_fail (a && b && get_fcn, COMPARE_ERROR); @@ -923,7 +924,7 @@ static char * double_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_BOOLEAN */ static int boolean_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { gboolean val; query_boolean_t pdata = (query_boolean_t)pd; @@ -944,7 +945,7 @@ static int boolean_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int boolean_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { gboolean va, vb; g_return_val_if_fail (a && b && get_fcn, COMPARE_ERROR); @@ -1002,7 +1003,7 @@ static char * boolean_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_CHAR */ static int char_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { char c; query_char_t pdata = (query_char_t)pd; @@ -1025,7 +1026,7 @@ static int char_match_predicate (gpointer object, QofAccessFunc get_fcn, } static int char_compare_func (gpointer a, gpointer b, gint options, - QofAccessFunc get_fcn) + QofAccessFunc get_fcn) { char va, vb; g_return_val_if_fail (a && b && get_fcn, COMPARE_ERROR); @@ -1083,7 +1084,7 @@ static char * char_to_string (gpointer object, QofAccessFunc get) /* QOF_QUERYCORE_KVP */ static int kvp_match_predicate (gpointer object, QofAccessFunc get_fcn, - QofQueryPredData *pd) + QofQueryPredData *pd) { int compare; kvp_frame *kvp; @@ -1170,7 +1171,7 @@ kvp_predicate_equal (QofQueryPredData *p1, QofQueryPredData *p2) QofQueryPredData * qof_query_kvp_predicate (QofQueryCompare how, - GSList *path, const kvp_value *value) + GSList *path, const kvp_value *value) { query_kvp_t pdata; GSList *node; @@ -1197,7 +1198,7 @@ static void init_tables (void) char const *name; QofQueryPredicateFunc pred; QofCompareFunc comp; - QueryPredicateCopy copy; + QueryPredicateCopyFunc copy; QueryPredDataFree pd_free; QueryToString toString; QueryPredicateEqual pred_equal; @@ -1238,19 +1239,19 @@ static void init_tables (void) /* Register the known data types */ for (i = 0; i < (sizeof(knownTypes)/sizeof(*knownTypes)); i++) { - gncQueryRegisterCoreObject (knownTypes[i].name, - knownTypes[i].pred, - knownTypes[i].comp, - knownTypes[i].copy, - knownTypes[i].pd_free, - knownTypes[i].toString, - knownTypes[i].pred_equal); + qof_query_register_core_object (knownTypes[i].name, + knownTypes[i].pred, + knownTypes[i].comp, + knownTypes[i].copy, + knownTypes[i].pd_free, + knownTypes[i].toString, + knownTypes[i].pred_equal); } } -static QueryPredicateCopy gncQueryCoreGetCopy (char const *type) +static QueryPredicateCopyFunc gncQueryCoreGetCopy (char const *type) { - QueryPredicateCopy rc; + QueryPredicateCopyFunc rc; g_return_val_if_fail (type, NULL); rc = g_hash_table_lookup (copyTable, type); return rc; @@ -1262,13 +1263,14 @@ static QueryPredDataFree gncQueryCoreGetPredFree (char const *type) return g_hash_table_lookup (freeTable, type); } -static void gncQueryRegisterCoreObject (char const *core_name, - QofQueryPredicateFunc pred, - QofCompareFunc comp, - QueryPredicateCopy copy, - QueryPredDataFree pd_free, - QueryToString toString, - QueryPredicateEqual pred_equal) +static void +qof_query_register_core_object (char const *core_name, + QofQueryPredicateFunc pred, + QofCompareFunc comp, + QueryPredicateCopyFunc copy, + QueryPredDataFree pd_free, + QueryToString toString, + QueryPredicateEqual pred_equal) { g_return_if_fail (core_name); g_return_if_fail (*core_name != '\0'); @@ -1354,7 +1356,7 @@ qof_query_core_predicate_free (QofQueryPredData *pdata) QofQueryPredData * qof_query_core_predicate_copy (QofQueryPredData *pdata) { - QueryPredicateCopy copy; + QueryPredicateCopyFunc copy; g_return_val_if_fail (pdata, NULL); g_return_val_if_fail (pdata->type_name, NULL); @@ -1363,8 +1365,9 @@ qof_query_core_predicate_copy (QofQueryPredData *pdata) return (copy (pdata)); } -char * qof_query_core_to_string (char const *type, gpointer object, - QofAccessFunc get) +char * +qof_query_core_to_string (char const *type, gpointer object, + QofAccessFunc get) { QueryToString toString; diff --git a/src/engine/gnc-session-p.h b/src/engine/qofsession-p.h similarity index 84% rename from src/engine/gnc-session-p.h rename to src/engine/qofsession-p.h index a44891980e..869609d884 100644 --- a/src/engine/gnc-session-p.h +++ b/src/engine/qofsession-p.h @@ -1,5 +1,5 @@ /********************************************************************\ - * gnc-session-p.h -- private functions for gnc sessions. * + * qofsession-p.h -- private functions for QOF sessions. * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -26,13 +26,13 @@ * Copyright (c) 1998-2003 Linas Vepstas */ -#ifndef GNC_SESSION_P_H -#define GNC_SESSION_P_H +#ifndef QOF_SESSION_P_H +#define QOF_SESSION_P_H -#include "gnc-session.h" #include "qofbook.h" +#include "qofsession.h" -struct gnc_session_struct +struct _QofSession { /* A book holds pointers to the various types of datasets used * by GnuCash. A session may have open multiple books. */ @@ -50,7 +50,7 @@ struct gnc_session_struct * and the backends should all be using (or making it look like) * there is only one stack. */ - GNCBackendError last_err; + QofBackendError last_err; char *error_message; char *fullpath; @@ -59,25 +59,25 @@ struct gnc_session_struct /* ---------------------------------------------------- */ /* Pointer to the backend that is actually used to move data * between the persistant store and the local engine. */ - Backend *backend; + QofBackend *backend; }; /* - * gnc_session_set_book() has funny semantics. + * qof_session_set_book() has funny semantics. * The session stores a list of books. If you call this routine * with a book that is closed, then its added to the list. If * you call this routine with a book that is open, then the * old list is blown away. */ -void gnc_session_set_book (GNCSession *session, QofBook *book); +void qof_session_set_book (QofSession *session, QofBook *book); -Backend * gnc_session_get_backend (GNCSession *session); +QofBackend * qof_session_get_backend (QofSession *session); -void gnc_session_push_error (GNCSession *session, GNCBackendError err, +void qof_session_push_error (QofSession *session, QofBackendError err, const char *message); -Backend* gncBackendInit_file(const char *book_id, void *data); +QofBackend* gncBackendInit_file(const char *book_id, void *data); #endif diff --git a/src/engine/gnc-session.c b/src/engine/qofsession.c similarity index 80% rename from src/engine/gnc-session.c rename to src/engine/qofsession.c index 5bc61518c7..3384f5b879 100644 --- a/src/engine/gnc-session.c +++ b/src/engine/qofsession.c @@ -1,5 +1,5 @@ /********************************************************************\ - * gnc-sesssion.c -- session access (connection to backend) * + * qofsesssion.c -- session access (connection to backend) * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -21,10 +21,10 @@ /* * FILE: - * gnc-session.c + * qofsession.c * * FUNCTION: - * Encapsulate a connection to a GnuCash backend. + * Encapsulate a connection to a storage backend. * * HISTORY: * Created by Linas Vepstas December 1998 @@ -32,6 +32,13 @@ * Copyright (c) 2000 Dave Peticolas */ + /* TODO: XXX we should probably move this resolve function to the + * file backend. I think the idea would be to open the backend + * and then ask it if it can contact it's storage media (disk, + * network, server, etc.) and abort if it can't. Mal-formed + * file URL's would be handled the same way! + */ + #include "config.h" #include @@ -43,15 +50,15 @@ #include -#include "Backend.h" -#include "BackendP.h" #include "gnc-event.h" -#include "gnc-session.h" -#include "gnc-session-p.h" #include "gnc-trace.h" +#include "qofbackend-p.h" #include "qofbook.h" #include "qofbook-p.h" +#include "qofsession.h" +#include "qofsession-p.h" +/* Some gnucash-specific code */ #ifdef GNUCASH #include "gnc-module.h" #include "TransLog.h" @@ -61,16 +68,16 @@ #define xaccLogDisable() #endif /* GNUCASH */ -static GNCSession * current_session = NULL; +static QofSession * current_session = NULL; static short module = MOD_IO; /* ====================================================================== */ /* error handling routines */ static void -gnc_session_clear_error (GNCSession *session) +qof_session_clear_error (QofSession *session) { - GNCBackendError err; + QofBackendError err; session->last_err = ERR_BACKEND_NO_ERR; g_free(session->error_message); @@ -81,13 +88,13 @@ gnc_session_clear_error (GNCSession *session) { do { - err = xaccBackendGetError (session->backend); + err = qof_backend_get_error (session->backend); } while (ERR_BACKEND_NO_ERR != err); } } void -gnc_session_push_error (GNCSession *session, GNCBackendError err, +qof_session_push_error (QofSession *session, QofBackendError err, const char *message) { if (!session) return; @@ -98,10 +105,10 @@ gnc_session_push_error (GNCSession *session, GNCBackendError err, session->error_message = g_strdup (message); } -GNCBackendError -gnc_session_get_error (GNCSession * session) +QofBackendError +qof_session_get_error (QofSession * session) { - GNCBackendError err; + QofBackendError err; if (!session) return ERR_BACKEND_NO_BACKEND; @@ -114,19 +121,19 @@ gnc_session_get_error (GNCSession * session) /* maybe we should return a no-backend error ??? */ if (! session->backend) return ERR_BACKEND_NO_ERR; - err = xaccBackendGetError (session->backend); + err = qof_backend_get_error (session->backend); session->last_err = err; return err; } static const char * -get_default_error_message(GNCBackendError err) +get_default_error_message(QofBackendError err) { return ""; } const char * -gnc_session_get_error_message(GNCSession *session) +qof_session_get_error_message(QofSession *session) { if(!session) return ""; if(!session->error_message) @@ -134,15 +141,15 @@ gnc_session_get_error_message(GNCSession *session) return session->error_message; } -GNCBackendError -gnc_session_pop_error (GNCSession * session) +QofBackendError +qof_session_pop_error (QofSession * session) { - GNCBackendError err; + QofBackendError err; if (!session) return ERR_BACKEND_NO_BACKEND; - err = gnc_session_get_error(session); - gnc_session_clear_error(session); + err = qof_session_get_error(session); + qof_session_clear_error(session); return err; } @@ -150,7 +157,7 @@ gnc_session_pop_error (GNCSession * session) /* ====================================================================== */ static void -gnc_session_init (GNCSession *session) +qof_session_init (QofSession *session) { if (!session) return; @@ -160,24 +167,24 @@ gnc_session_init (GNCSession *session) session->logpath = NULL; session->backend = NULL; - gnc_session_clear_error (session); + qof_session_clear_error (session); } -GNCSession * -gnc_session_new (void) +QofSession * +qof_session_new (void) { - GNCSession *session = g_new0(GNCSession, 1); - gnc_session_init(session); + QofSession *session = g_new0(QofSession, 1); + qof_session_init(session); return session; } -GNCSession * -gnc_get_current_session (void) +QofSession * +qof_session_get_current_session (void) { if (!current_session) { gnc_engine_suspend_events (); - current_session = gnc_session_new (); + current_session = qof_session_new (); gnc_engine_resume_events (); } @@ -185,13 +192,13 @@ gnc_get_current_session (void) } void -gnc_set_current_session (GNCSession *session) +qof_session_set_current_session (QofSession *session) { current_session = session; } QofBook * -gnc_session_get_book (GNCSession *session) +qof_session_get_book (QofSession *session) { GList *node; if (!session) return NULL; @@ -205,7 +212,7 @@ gnc_session_get_book (GNCSession *session) } void -gnc_session_set_book (GNCSession *session, QofBook *addbook) +qof_session_set_book (QofSession *session, QofBook *addbook) { GList *node; if (!session) return; @@ -236,22 +243,22 @@ gnc_session_set_book (GNCSession *session, QofBook *addbook) LEAVE (" "); } -Backend * -gnc_session_get_backend (GNCSession *session) +QofBackend * +qof_session_get_backend (QofSession *session) { if (!session) return NULL; return session->backend; } const char * -gnc_session_get_file_path (GNCSession *session) +qof_session_get_file_path (QofSession *session) { if (!session) return NULL; return session->fullpath; } const char * -gnc_session_get_url (GNCSession *session) +qof_session_get_url (QofSession *session) { if (!session) return NULL; return session->book_id; @@ -260,7 +267,7 @@ gnc_session_get_url (GNCSession *session) /* ====================================================================== */ static void -gnc_session_int_backend_load_error(GNCSession *session, +qof_session_int_backend_load_error(QofSession *session, char *message, char *dll_err) { PWARN (message, dll_err ? dll_err : ""); @@ -274,7 +281,7 @@ gnc_session_int_backend_load_error(GNCSession *session, g_free(session->book_id); session->book_id = NULL; - gnc_session_push_error (session, ERR_BACKEND_NO_BACKEND, NULL); + qof_session_push_error (session, ERR_BACKEND_NO_BACKEND, NULL); } @@ -284,10 +291,10 @@ gnc_session_int_backend_load_error(GNCSession *session, * use traditional dlopen calls. */ static void -gnc_session_load_backend(GNCSession * session, char * backend_name) +qof_session_load_backend(QofSession * session, char * backend_name) { GNCModule mod = 0; - Backend *(* be_new_func)(void); + QofBackend *(* be_new_func)(void); char * mod_name = g_strdup_printf("gnucash/backend/%s", backend_name); /* FIXME : reinstate better error messages with gnc_module errors */ @@ -315,13 +322,13 @@ gnc_session_load_backend(GNCSession * session, char * backend_name) } else { - gnc_session_int_backend_load_error(session, " can't find backend_new ", + qof_session_int_backend_load_error(session, " can't find backend_new ", ""); } } else { - gnc_session_int_backend_load_error(session, + qof_session_int_backend_load_error(session, " failed to load '%s' backend", backend_name); } @@ -333,7 +340,7 @@ gnc_session_load_backend(GNCSession * session, char * backend_name) #else /* GNUCASH */ static void -gnc_session_load_backend(GNCSession * session, char * backend_name) +qof_session_load_backend(QofSession * session, char * backend_name) { ENTER (" "); LEAVE (" "); @@ -343,14 +350,14 @@ gnc_session_load_backend(GNCSession * session, char * backend_name) /* ====================================================================== */ static void -gnc_session_destroy_backend (GNCSession *session) +qof_session_destroy_backend (QofSession *session) { g_return_if_fail (session); if (session->backend) { /* clear any error message */ - char * msg = xaccBackendGetMessage (session->backend); + char * msg = qof_backend_get_message (session->backend); g_free (msg); /* Then destroy the backend */ @@ -368,7 +375,7 @@ gnc_session_destroy_backend (GNCSession *session) } void -gnc_session_begin (GNCSession *session, const char * book_id, +qof_session_begin (QofSession *session, const char * book_id, gboolean ignore_lock, gboolean create_if_nonexistent) { if (!session) return; @@ -378,12 +385,12 @@ gnc_session_begin (GNCSession *session, const char * book_id, book_id ? book_id : "(null)"); /* clear the error condition of previous errors */ - gnc_session_clear_error (session); + qof_session_clear_error (session); /* check to see if this session is already open */ - if (gnc_session_get_url(session)) + if (qof_session_get_url(session)) { - gnc_session_push_error (session, ERR_BACKEND_LOCKED, NULL); + qof_session_push_error (session, ERR_BACKEND_LOCKED, NULL); LEAVE("push error book is already open "); return; } @@ -391,18 +398,24 @@ gnc_session_begin (GNCSession *session, const char * book_id, /* seriously invalid */ if (!book_id) { - gnc_session_push_error (session, ERR_BACKEND_BAD_URL, NULL); + qof_session_push_error (session, ERR_BACKEND_BAD_URL, NULL); LEAVE("push error missing book_id"); return; } /* Store the sessionid URL */ session->book_id = g_strdup (book_id); + /* XXX we should probably move this resolve function to the + * file backend. I think the idea would be to open the backend + * and then ask it if it can contact it's storage media (disk, + * network, server, etc.) and abort if it can't. Mal-formed + * file URL's would be handled the same way! + */ /* ResolveURL tries to find the file in the file system. */ session->fullpath = xaccResolveURL(book_id); if (!session->fullpath) { - gnc_session_push_error (session, ERR_FILEIO_FILE_NOT_FOUND, NULL); + qof_session_push_error (session, ERR_FILEIO_FILE_NOT_FOUND, NULL); LEAVE("push error: can't resolve file path"); return; } @@ -412,13 +425,13 @@ gnc_session_begin (GNCSession *session, const char * book_id, PINFO ("logpath=%s", session->logpath ? session->logpath : "(null)"); /* destroy the old backend */ - gnc_session_destroy_backend(session); + qof_session_destroy_backend(session); /* check to see if this is a type we know how to handle */ if (!g_strncasecmp(book_id, "file:", 5) || *session->fullpath == '/') { - gnc_session_load_backend(session, "file" ); + qof_session_load_backend(session, "file" ); } #if 0 /* load different backend based on URL. We should probably @@ -432,11 +445,11 @@ gnc_session_begin (GNCSession *session, const char * book_id, #endif else if (!g_strncasecmp(book_id, "postgres://", 11)) { - gnc_session_load_backend(session, "postgres"); + qof_session_load_backend(session, "postgres"); } else if (!g_strncasecmp(book_id, "rpc://", 6)) { - gnc_session_load_backend(session, "rpc"); + qof_session_load_backend(session, "rpc"); } /* if there's a begin method, call that. */ @@ -446,11 +459,11 @@ gnc_session_begin (GNCSession *session, const char * book_id, char * msg; (session->backend->session_begin)(session->backend, session, - gnc_session_get_url(session), ignore_lock, + qof_session_get_url(session), ignore_lock, create_if_nonexistent); PINFO("Done running session_begin on backend"); - err = xaccBackendGetError(session->backend); - msg = xaccBackendGetMessage(session->backend); + err = qof_backend_get_error(session->backend); + msg = qof_backend_get_message(session->backend); if (err != ERR_BACKEND_NO_ERR) { g_free(session->fullpath); @@ -459,7 +472,7 @@ gnc_session_begin (GNCSession *session, const char * book_id, session->logpath = NULL; g_free(session->book_id); session->book_id = NULL; - gnc_session_push_error (session, err, msg); + qof_session_push_error (session, err, msg); LEAVE("backend error %d", err); return; } @@ -472,7 +485,7 @@ gnc_session_begin (GNCSession *session, const char * book_id, /* No backend was found. That's bad. */ if (NULL == session->backend) { - gnc_session_push_error (session, ERR_BACKEND_BAD_URL, NULL); + qof_session_push_error (session, ERR_BACKEND_BAD_URL, NULL); } LEAVE (" sess=%p book-id=%s", session, book_id ? book_id : "(null)"); @@ -481,19 +494,19 @@ gnc_session_begin (GNCSession *session, const char * book_id, /* ====================================================================== */ void -gnc_session_load (GNCSession *session, - GNCPercentageFunc percentage_func) +qof_session_load (QofSession *session, + QofPercentageFunc percentage_func) { QofBook *newbook; QofBookList *oldbooks, *node; - Backend *be; - GNCBackendError err; + QofBackend *be; + QofBackendError err; if (!session) return; - if (!gnc_session_get_url(session)) return; + if (!qof_session_get_url(session)) return; - ENTER ("sess=%p book_id=%s", session, gnc_session_get_url(session) - ? gnc_session_get_url(session) : "(null)"); + ENTER ("sess=%p book_id=%s", session, qof_session_get_url(session) + ? qof_session_get_url(session) : "(null)"); /* At this point, we should are supposed to have a valid book @@ -506,7 +519,7 @@ gnc_session_load (GNCSession *session, xaccLogSetBaseName(session->logpath); - gnc_session_clear_error (session); + qof_session_clear_error (session); /* This code should be sufficient to initialize *any* backend, * whether http, postgres, or anything else that might come along. @@ -530,7 +543,7 @@ gnc_session_load (GNCSession *session, if (be->load) { be->load (be, newbook); - gnc_session_push_error (session, xaccBackendGetError(be), NULL); + qof_session_push_error (session, qof_backend_get_error(be), NULL); } /* we just got done loading, it can't possibly be dirty !! */ @@ -539,7 +552,7 @@ gnc_session_load (GNCSession *session, xaccLogEnable(); } - err = gnc_session_get_error(session); + err = qof_session_get_error(session); if ((err != ERR_BACKEND_NO_ERR) && (err != ERR_FILEIO_FILE_TOO_OLD) && (err != ERR_SQL_DB_TOO_OLD)) @@ -550,7 +563,7 @@ gnc_session_load (GNCSession *session, qof_book_destroy (newbook); g_list_free (session->books); session->books = oldbooks; - LEAVE("error from backend %d", gnc_session_get_error(session)); + LEAVE("error from backend %d", qof_session_get_error(session)); xaccLogEnable(); return; } @@ -564,14 +577,14 @@ gnc_session_load (GNCSession *session, } xaccLogEnable(); - LEAVE ("sess = %p, book_id=%s", session, gnc_session_get_url(session) - ? gnc_session_get_url(session) : "(null)"); + LEAVE ("sess = %p, book_id=%s", session, qof_session_get_url(session) + ? qof_session_get_url(session) : "(null)"); } /* ====================================================================== */ gboolean -gnc_session_save_may_clobber_data (GNCSession *session) +qof_session_save_may_clobber_data (QofSession *session) { /* FIXME: Make sure this doesn't need more sophisticated semantics * in the face of special file, devices, pipes, symlinks, etc. */ @@ -586,14 +599,14 @@ gnc_session_save_may_clobber_data (GNCSession *session) } static gboolean -save_error_handler(Backend *be, GNCSession *session) +save_error_handler(QofBackend *be, QofSession *session) { int err; - err = xaccBackendGetError(be); + err = qof_backend_get_error(be); if (ERR_BACKEND_NO_ERR != err) { - gnc_session_push_error (session, err, NULL); + qof_session_push_error (session, err, NULL); /* we close the backend here ... isn't this a bit harsh ??? */ if (be->session_end) @@ -606,18 +619,18 @@ save_error_handler(Backend *be, GNCSession *session) } void -gnc_session_save (GNCSession *session, - GNCPercentageFunc percentage_func) +qof_session_save (QofSession *session, + QofPercentageFunc percentage_func) { GList *node; - Backend *be; + QofBackend *be; if (!session) return; ENTER ("sess=%p book_id=%s", session, - gnc_session_get_url(session) - ? gnc_session_get_url(session) : "(null)"); + qof_session_get_url(session) + ? qof_session_get_url(session) : "(null)"); /* If there is a backend, and the backend is reachable * (i.e. we can communicate with it), then synchronize with @@ -657,11 +670,11 @@ gnc_session_save (GNCSession *session, /* If the fullpath doesn't exist, either the user failed to initialize, * or the lockfile was never obtained. Either way, we can't write. */ - gnc_session_clear_error (session); + qof_session_clear_error (session); if (!session->fullpath) { - gnc_session_push_error (session, ERR_BACKEND_MISC, NULL); + qof_session_push_error (session, ERR_BACKEND_MISC, NULL); return; } @@ -672,20 +685,20 @@ gnc_session_save (GNCSession *session, /* XXX what does this function do ?? */ gboolean -gnc_session_export (GNCSession *tmp_session, - GNCSession *real_session, - GNCPercentageFunc percentage_func) +qof_session_export (QofSession *tmp_session, + QofSession *real_session, + QofPercentageFunc percentage_func) { QofBook *book; - Backend *be; + QofBackend *be; if ((!tmp_session) || (!real_session)) return FALSE; - book = gnc_session_get_book (real_session); + book = qof_session_get_book (real_session); ENTER ("tmp_session=%p real_session=%p book=%p book_id=%s", tmp_session, real_session, book, - gnc_session_get_url(tmp_session) - ? gnc_session_get_url(tmp_session) : "(null)"); + qof_session_get_url(tmp_session) + ? qof_session_get_url(tmp_session) : "(null)"); /* There must be a backend or else. (It should always be the file * backend too.) @@ -708,12 +721,12 @@ gnc_session_export (GNCSession *tmp_session, /* ====================================================================== */ void -gnc_session_end (GNCSession *session) +qof_session_end (QofSession *session) { if (!session) return; - ENTER ("sess=%p book_id=%s", session, gnc_session_get_url(session) - ? gnc_session_get_url(session) : "(null)"); + ENTER ("sess=%p book_id=%s", session, qof_session_get_url(session) + ? qof_session_get_url(session) : "(null)"); /* close down the backend first */ if (session->backend && session->backend->session_end) @@ -721,7 +734,7 @@ gnc_session_end (GNCSession *session) (session->backend->session_end)(session->backend); } - gnc_session_clear_error (session); + qof_session_clear_error (session); g_free (session->fullpath); session->fullpath = NULL; @@ -732,25 +745,25 @@ gnc_session_end (GNCSession *session) g_free (session->book_id); session->book_id = NULL; - LEAVE ("sess=%p book_id=%s", session, gnc_session_get_url(session) - ? gnc_session_get_url(session) : "(null)"); + LEAVE ("sess=%p book_id=%s", session, qof_session_get_url(session) + ? qof_session_get_url(session) : "(null)"); } void -gnc_session_destroy (GNCSession *session) +qof_session_destroy (QofSession *session) { GList *node; if (!session) return; ENTER ("sess=%p book_id=%s", session, - gnc_session_get_url(session) - ? gnc_session_get_url(session) : "(null)"); + qof_session_get_url(session) + ? qof_session_get_url(session) : "(null)"); xaccLogDisable(); - gnc_session_end (session); + qof_session_end (session); /* destroy the backend */ - gnc_session_destroy_backend(session); + qof_session_destroy_backend(session); for (node=session->books; node; node=node->next) { @@ -774,7 +787,7 @@ gnc_session_destroy (GNCSession *session) /* this call is weird. */ void -gnc_session_swap_data (GNCSession *session_1, GNCSession *session_2) +qof_session_swap_data (QofSession *session_1, QofSession *session_2) { GList *books_1, *books_2, *node; @@ -806,7 +819,7 @@ gnc_session_swap_data (GNCSession *session_1, GNCSession *session_2) /* ====================================================================== */ gboolean -gnc_session_events_pending (GNCSession *session) +qof_session_events_pending (QofSession *session) { if (!session) return FALSE; if (!session->backend) return FALSE; @@ -816,7 +829,7 @@ gnc_session_events_pending (GNCSession *session) } gboolean -gnc_session_process_events (GNCSession *session) +qof_session_process_events (QofSession *session) { if (!session) return FALSE; if (!session->backend) return FALSE; diff --git a/src/engine/qofsession.h b/src/engine/qofsession.h new file mode 100644 index 0000000000..9c916eed7a --- /dev/null +++ b/src/engine/qofsession.h @@ -0,0 +1,250 @@ +/********************************************************************\ + * qofsession.h -- session access (connection to backend) * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License* + * along with this program; if not, contact: * + * * + * Free Software Foundation Voice: +1-617-542-5942 * + * 59 Temple Place - Suite 330 Fax: +1-617-542-2652 * + * Boston, MA 02111-1307, USA gnu@gnu.org * + * * +\********************************************************************/ + +/** @addtogroup Engine + * @{ */ +/** @file qofsession.h + * @brief Encapsulates a connection to a backednd (persistent store) + * @author Copyright (c) 1998, 1999, 2001, 2002 Linas Vepstas + * @author Copyright (c) 2000 Dave Peticolas + * + * FUNCTION: + * Encapsulates a connection to a storage backend. That is, it + * manages the connection to a persistant data store; whereas + * the backend is the thing that performs the actual datastore + * access. + * + * This class provides several important services: + * + * 1) It resolves and loads the appropriate backend, based on + * the URL. + * + * 2) It reports backend errors (e.g. network errors, storage + * corruption errors) through a single, backend-independent + * API. + * + * 3) It reports non-error events received from the backend. + * + * 4) It helps manage global dataset locks. For example, for the + * file backend, the lock prevents multiple users from editing + * the same file at the same time, thus avoiding lost data due + * to race conditions. Thus, an open session implies that the + * associated file is locked. + * + * 5) Misc utilities, such as a search path for the file to be + * edited, and/or other URL resolution utilities. This should + * simplify install & maintenance problems for naive users who + * may not have a good grasp on what a file system is, or where + * they want to keep their data files. + * + * 6) In the future, this class is probably a good place to manage + * a portion of the user authentication process, and hold user + * credentials/cookies/keys/tokens. This is because at the + * coarsest level, authorization can happen at the datastore + * level: i.e. does this user even have the authority to connect + * to and open this datastore? + * + * A breif note about books & sessions: + * A book encapsulates the datasets manipulated by GnuCash. A book + * holds the actual data. By contrast, the session mediates the + * connection between a book (the thing that lives in virtual memory + * in the local process) and the datastore (the place where book + * data lives permanently, e.g., file, database). + * + * In the current design, a session may hold multiple books. For + * now, exactly what this means is somewhat vague, and code in + * various places makes some implicit assumptions: first, only + * one book is 'current' and open for editing. Next, its assumed + * that all of the books in a session are related in some way. + * i.e. that they are all earlier accounting periods of the + * currently open book. In particular, the backends probably + * make that assumption, in order to store the different accounting + * periods in a clump so that one can be found, given another. + * + */ + +#ifndef QOF_SESSION_H +#define QOF_SESSION_H + +#include "qofbackend.h" +#include "qofbook.h" + +/* PROTOTYPES ******************************************************/ + +typedef struct _QofSession QofSession; + +QofSession * qof_session_new (void); +void qof_session_destroy (QofSession *session); +QofSession * qof_session_get_current_session (void); +void qof_session_set_current_session (QofSession *session); + +/** The qof_session_swap_data () method swaps the book of + * the two given sessions. It is useful + * for 'Save As' type functionality. */ +void qof_session_swap_data (QofSession *session_1, QofSession *session_2); + +/** The qof_session_begin () method begins a new session. + * It takes as an argument the book id. The book id must be a string + * in the form of a URI/URL. + * In the current implementation, the following URL's are supported + * -- File URI of the form + * "file:/home/somewhere/somedir/file.xac" + * The path part must be a valid path. The file-part must be + * a valid old-style-xacc or new-style-gnucash-format file. Paths + * may be relative or absolute. If the path is relative; that is, + * if the argument is "file:somefile.xac" then a sequence of + * search paths are checked for a file of this name. + * + * -- Postgres URI of the form + * "postgres://hostname.com/dbname" + * See the src/backend/postgres subdirectory for more info. + * + * -- RPC URI of the form rpc://hostname.com/rpcserver. + * + * The 'ignore_lock' argument, if set to TRUE, will cause this routine + * to ignore any global-datastore locks (e.g. file locks) that it finds. + * If set to FALSE, then file/database-global locks will be tested and + * obeyed. + * + * If the datastore exists, can be reached (e.g over the net), + * connected to, opened and read, and a lock can be obtained then + * a lock will be obtained. Note that multi-user datastores + * (e.g. the SQL backend) typically will not need to get a global + * lock, and thus, the user will not be locked out. That's the + * whole point of 'multi-user'. + * + * If the file/database doesn't exist, and the create_if_nonexistent + * flag is set to TRUE, then the database is created. + * + * If an error occurs, it will be pushed onto the session error + * stack, and that is where it should be examined. + */ +void qof_session_begin (QofSession *session, const char * book_id, + gboolean ignore_lock, gboolean create_if_nonexistent); + + +/** + * The qof_session_load() method causes the QofBook to be made ready to + * to use with this URL/datastore. When the URL points at a file, + * then this routine would load the data from the file. With remote + * backends, e.g. network or SQL, this would load only enough data + * to make the book actually usable; it would not cause *all* of the + * data to be loaded. + */ +typedef void (*QofPercentageFunc) (const char *message, double percent); +void qof_session_load (QofSession *session, + QofPercentageFunc percentage_func); +gboolean qof_session_export (QofSession *tmp_session, + QofSession *real_session, + QofPercentageFunc percentage_func); + +/** The qof_session_get_error() routine can be used to obtain the reason + * for any failure. Calling this routine returns the current error. + * + * The qof_session_pop_error() routine can be used to obtain the reason + * for any failure. Calling this routine resets the error value. + * + * This routine allows an implementation of multiple error values, + * e.g. in a stack, where this routine pops the top value. The current + * implementation has a stack that is one-deep. + * + * See qofbackend.h for a listing of returned errors. + */ +QofBackendError qof_session_get_error (QofSession *session); +const char * qof_session_get_error_message(QofSession *session); +QofBackendError qof_session_pop_error (QofSession *session); + + +QofBook * qof_session_get_book (QofSession *session); +void qof_session_set_book (QofSession *session, QofBook *book); + +/** The qof_session_get_file_path() routine returns the fully-qualified file + * path for the session. That is, if a relative or partial filename + * was for the session, then it had to have been fully resolved to + * open the session. This routine returns the result of this resolution. + * The path is always guarenteed to reside in the local file system, + * even if the session itself was opened as a URL. (currently, the + * filepath is derived from the url by substituting commas for + * slashes). + * + * The qof_session_get_url() routine returns the url that was opened. + * URL's for local files take the form of + * file:/some/where/some/file.gml + */ +const char * qof_session_get_file_path (QofSession *session); +const char * qof_session_get_url (QofSession *session); + +/** + * The qof_session_not_saved() subroutine will return TRUE + * if any data in the session hasn't been saved to long-term storage. + */ +gboolean qof_session_not_saved(QofSession *session); + +/** FIXME: This isn't as thorough as we might want it to be... */ +gboolean qof_session_save_may_clobber_data (QofSession *session); + +/** The qof_session_save() method will commit all changes that have been + * made to the session. For the file backend, this is nothing + * more than a write to the file of the current AccountGroup & etc. + * For the SQL backend, this is typically a no-op (since all data + * has already been written out to the database. + * + * The qof_session_end() method will release the session lock. For the + * file backend, it will *not* save the account group to a file. Thus, + * this method acts as an "abort" or "rollback" primitive. However, + * for other backends, such as the sql backend, the data would have + * been written out before this, and so this routines wouldn't + * roll-back anything; it would just shut the connection. + */ +void qof_session_save (QofSession *session, + QofPercentageFunc percentage_func); +void qof_session_end (QofSession *session); + +/** The qof_session_events_pending() method will return TRUE if the backend + * has pending events which must be processed to bring the engine + * up to date with the backend. + * + * The qof_session_process_events() method will process any events indicated + * by the qof_session_events_pending() method. It returns TRUE if the + * engine was modified while engine events were suspended. + */ +gboolean qof_session_events_pending (QofSession *session); +gboolean qof_session_process_events (QofSession *session); + +/** The xaccResolveFilePath() routine is a utility that will accept + * a fragmentary filename as input, and resolve it into a fully + * qualified path in the file system, i.e. a path that begins with + * a leading slash. First, the current working directory is + * searched for the file. Next, the directory $HOME/.gnucash/data, + * and finally, a list of other (configurable) paths. If the file + * is not found, then the path $HOME/.gnucash/data is used. If + * $HOME is not defined, then the current working directory is + * used. + */ +char * xaccResolveFilePath (const char * filefrag); +char * xaccResolveURL (const char * pathfrag); + +/** Run the RPC Server */ +void gnc_run_rpc_server (void); + +#endif /* QOF_SESSION_H */ +/** @} */ diff --git a/src/engine/test-core/test-engine-stuff.c b/src/engine/test-core/test-engine-stuff.c index 436ef1b907..4a2a6ec13d 100644 --- a/src/engine/test-core/test-engine-stuff.c +++ b/src/engine/test-core/test-engine-stuff.c @@ -31,7 +31,7 @@ static gint max_group_accounts = 10; static kvp_value* get_random_kvp_value_depth (int type, gint depth); static gpointer get_random_list_element (GList *list); -static void add_random_splits(GNCBook *book, Transaction *trn); +static void add_random_splits(QofBook *book, Transaction *trn); /***********************************************************************/ @@ -159,7 +159,7 @@ get_random_commodity_namespace(void) } void -make_random_changes_to_price (GNCBook *book, GNCPrice *p) +make_random_changes_to_price (QofBook *book, GNCPrice *p) { Timespec *ts; char *string; @@ -193,7 +193,7 @@ make_random_changes_to_price (GNCBook *book, GNCPrice *p) } GNCPrice * -get_random_price(GNCBook *book) +get_random_price(QofBook *book) { GNCPrice *p; @@ -205,7 +205,7 @@ get_random_price(GNCBook *book) } void -make_random_pricedb (GNCBook *book, GNCPriceDB *db) +make_random_pricedb (QofBook *book, GNCPriceDB *db) { int num_prices; @@ -224,7 +224,7 @@ make_random_pricedb (GNCBook *book, GNCPriceDB *db) } GNCPriceDB * -get_random_pricedb(GNCBook *book) +get_random_pricedb(QofBook *book) { GNCPriceDB *db; @@ -245,7 +245,7 @@ price_accumulator (GNCPrice *p, gpointer data) } void -make_random_changes_to_pricedb (GNCBook *book, GNCPriceDB *pdb) +make_random_changes_to_pricedb (QofBook *book, GNCPriceDB *pdb) { GList *list = NULL; GList *node; @@ -529,7 +529,7 @@ set_account_random_string(Account* act, } static void -account_add_subaccounts (GNCBook *book, Account *account, int depth) +account_add_subaccounts (QofBook *book, Account *account, int depth) { int num_accounts; @@ -549,7 +549,7 @@ account_add_subaccounts (GNCBook *book, Account *account, int depth) } static void -make_random_group_depth (GNCBook *book, AccountGroup *group, int depth) +make_random_group_depth (QofBook *book, AccountGroup *group, int depth) { int num_accounts; @@ -572,7 +572,7 @@ make_random_group_depth (GNCBook *book, AccountGroup *group, int depth) } static void -make_random_group (GNCBook *book, AccountGroup * group) +make_random_group (QofBook *book, AccountGroup * group) { int depth; @@ -585,7 +585,7 @@ make_random_group (GNCBook *book, AccountGroup * group) } AccountGroup * -get_random_group (GNCBook *book) +get_random_group (QofBook *book) { AccountGroup * group; @@ -604,7 +604,7 @@ typedef struct } TransInfo; void -make_random_changes_to_transaction_and_splits (GNCBook *book, +make_random_changes_to_transaction_and_splits (QofBook *book, Transaction *trans, GList *accounts) { @@ -700,7 +700,7 @@ add_trans_helper (Transaction *trans, gpointer data) } void -make_random_changes_to_group (GNCBook *book, AccountGroup *group) +make_random_changes_to_group (QofBook *book, AccountGroup *group) { Account *new_account; Account *account; @@ -828,7 +828,7 @@ make_random_changes_to_group (GNCBook *book, AccountGroup *group) } Account* -get_random_account(GNCBook *book) +get_random_account(QofBook *book) { Account *ret; int tmp_int; @@ -855,7 +855,7 @@ get_random_account(GNCBook *book) } void -make_random_changes_to_account (GNCBook *book, Account *account) +make_random_changes_to_account (QofBook *book, Account *account) { int tmp_int; @@ -894,7 +894,7 @@ set_split_random_string(Split *spl, static char possible_chars[] = { NREC, CREC, YREC, FREC }; Split* -get_random_split(GNCBook *book, gnc_numeric num) +get_random_split(QofBook *book, gnc_numeric num) { Split *ret; gnc_numeric oneVal; @@ -959,7 +959,7 @@ set_tran_random_string(Transaction* trn, } static void -add_random_splits(GNCBook *book, Transaction *trn) +add_random_splits(QofBook *book, Transaction *trn) { gnc_numeric num = get_random_gnc_numeric(); @@ -980,7 +980,7 @@ trn_add_ran_timespec(Transaction *trn, void (*func)(Transaction*, Transaction * -get_random_transaction_with_currency(GNCBook *book, +get_random_transaction_with_currency(QofBook *book, gnc_commodity *currency) { Transaction* ret; @@ -1017,13 +1017,13 @@ get_random_transaction_with_currency(GNCBook *book, } Transaction* -get_random_transaction (GNCBook *book) +get_random_transaction (QofBook *book) { return get_random_transaction_with_currency (book, NULL); } void -make_random_changes_to_transaction (GNCBook *book, Transaction *trans) +make_random_changes_to_transaction (QofBook *book, Transaction *trans) { g_return_if_fail (trans && book); @@ -1095,7 +1095,7 @@ get_random_commodity_from_table (gnc_commodity_table *table) } gnc_commodity* -get_random_commodity (GNCBook *book) +get_random_commodity (QofBook *book) { gnc_commodity *ret; gchar *name; @@ -1523,12 +1523,12 @@ get_random_query(void) return q; } -GNCBook * +QofBook * get_random_book (void) { - GNCBook *book; + QofBook *book; - book = gnc_book_new (); + book = qof_book_new (); make_random_group (book, gnc_book_get_group (book)); make_random_pricedb (book, gnc_book_get_pricedb (book)); @@ -1536,15 +1536,15 @@ get_random_book (void) return book; } -GNCSession * +QofSession * get_random_session (void) { - GNCSession *session; - GNCBook *book; + QofSession *session; + QofBook *book; - session = gnc_session_new (); + session = qof_session_new (); - book = gnc_session_get_book (session); + book = qof_session_get_book (session); make_random_group (book, gnc_book_get_group (book)); make_random_pricedb (book, gnc_book_get_pricedb (book)); @@ -1553,7 +1553,7 @@ get_random_session (void) } void -add_random_transactions_to_book (GNCBook *book, gint num_transactions) +add_random_transactions_to_book (QofBook *book, gint num_transactions) { gnc_commodity_table *table; GList *accounts; @@ -1599,7 +1599,7 @@ add_random_transactions_to_book (GNCBook *book, gint num_transactions) } void -make_random_changes_to_book (GNCBook *book) +make_random_changes_to_book (QofBook *book) { g_return_if_fail (book); @@ -1612,11 +1612,11 @@ make_random_changes_to_book (GNCBook *book) } void -make_random_changes_to_session (GNCSession *session) +make_random_changes_to_session (QofSession *session) { g_return_if_fail (session); - make_random_changes_to_book (gnc_session_get_book (session)); + make_random_changes_to_book (qof_session_get_book (session)); } typedef struct diff --git a/src/engine/test-core/test-engine-stuff.h b/src/engine/test-core/test-engine-stuff.h index 6e0f01dd2c..9d167f9a77 100644 --- a/src/engine/test-core/test-engine-stuff.h +++ b/src/engine/test-core/test-engine-stuff.h @@ -10,10 +10,10 @@ #include #include "Query.h" -#include "gnc-book.h" #include "gnc-date.h" #include "gnc-pricedb.h" -#include "gnc-session.h" +#include "qofbook.h" +#include "qofsession.h" Timespec* get_random_timespec(void); void random_timespec_zero_nsec (gboolean zero_nsec); @@ -41,16 +41,16 @@ void set_max_kvp_frame_elements (gint max_kvp_frame_elements); void set_max_group_depth (gint max_group_depth); void set_max_group_accounts (gint max_group_accounts); -GNCPrice * get_random_price(GNCBook *book); -void make_random_pricedb (GNCBook *book, GNCPriceDB *pdb); -GNCPriceDB * get_random_pricedb(GNCBook *book); -AccountGroup * get_random_group(GNCBook * book); -Account* get_random_account(GNCBook * book); -Split* get_random_split(GNCBook *book, gnc_numeric num); -Transaction* get_random_transaction(GNCBook *book); -Transaction* get_random_transaction_with_currency(GNCBook *book, +GNCPrice * get_random_price(QofBook *book); +void make_random_pricedb (QofBook *book, GNCPriceDB *pdb); +GNCPriceDB * get_random_pricedb(QofBook *book); +AccountGroup * get_random_group(QofBook * book); +Account* get_random_account(QofBook * book); +Split* get_random_split(QofBook *book, gnc_numeric num); +Transaction* get_random_transaction(QofBook *book); +Transaction* get_random_transaction_with_currency(QofBook *book, gnc_commodity *currency); -gnc_commodity* get_random_commodity(GNCBook *book); +gnc_commodity* get_random_commodity(QofBook *book); const char *get_random_commodity_namespace(void); typedef enum @@ -70,24 +70,24 @@ Query * make_trans_query (Transaction *trans, TestQueryTypes query_types); TestQueryTypes get_random_query_type (void); void trans_query_include_price (gboolean include_amounts); -GNCBook * get_random_book (void); -GNCSession * get_random_session (void); +QofBook * get_random_book (void); +QofSession * get_random_session (void); -void add_random_transactions_to_book (GNCBook *book, gint num_transactions); +void add_random_transactions_to_book (QofBook *book, gint num_transactions); void make_random_changes_to_commodity (gnc_commodity *com); void make_random_changes_to_commodity_table (gnc_commodity_table *table); -void make_random_changes_to_price (GNCBook *book, GNCPrice *price); -void make_random_changes_to_pricedb (GNCBook *book, GNCPriceDB *pdb); +void make_random_changes_to_price (QofBook *book, GNCPrice *price); +void make_random_changes_to_pricedb (QofBook *book, GNCPriceDB *pdb); void make_random_changes_to_split (Split *split); -void make_random_changes_to_transaction (GNCBook *book, +void make_random_changes_to_transaction (QofBook *book, Transaction *trans); -void make_random_changes_to_transaction_and_splits (GNCBook *book, +void make_random_changes_to_transaction_and_splits (QofBook *book, Transaction *trans, GList *accounts); -void make_random_changes_to_account (GNCBook *book, Account *account); -void make_random_changes_to_group (GNCBook *book, AccountGroup *group); -void make_random_changes_to_book (GNCBook *book); -void make_random_changes_to_session (GNCSession *session); +void make_random_changes_to_account (QofBook *book, Account *account); +void make_random_changes_to_group (QofBook *book, AccountGroup *group); +void make_random_changes_to_book (QofBook *book); +void make_random_changes_to_session (QofSession *session); #endif diff --git a/src/engine/test/test-commodities.c b/src/engine/test/test-commodities.c index 6889a77cb4..440b03fb48 100644 --- a/src/engine/test/test-commodities.c +++ b/src/engine/test/test-commodities.c @@ -106,7 +106,7 @@ test_commodity(void) int j; gnc_commodity_table *tbl; gnc_commodity *coms[20]; - GNCBook *book; + QofBook *book; book = gnc_book_new (); tbl = gnc_commodity_table_new (); diff --git a/src/engine/test/test-freq-spec.c b/src/engine/test/test-freq-spec.c index da5ec0477c..20b66985d6 100644 --- a/src/engine/test/test-freq-spec.c +++ b/src/engine/test/test-freq-spec.c @@ -17,7 +17,7 @@ #include "gnc-module.h" #include "gnc-book.h" -static GNCBook *book; +static QofBook *book; static void test_once (void) diff --git a/src/engine/test/test-lots.c b/src/engine/test/test-lots.c index c98e3a574e..18d4f74333 100644 --- a/src/engine/test/test-lots.c +++ b/src/engine/test/test-lots.c @@ -22,8 +22,8 @@ static void run_test (void) { - GNCSession *sess; - GNCBook *book; + QofSession *sess; + QofBook *book; AccountGroup *grp; if(!gnc_module_load("gnucash/engine", 0)) @@ -36,7 +36,7 @@ run_test (void) /* In the first test, we will merely try to see if we can run * without crashing. We don't check to see if data is good. */ sess = get_random_session (); - book = gnc_session_get_book (sess); + book = qof_session_get_book (sess); if (!book) { failure("book not created"); diff --git a/src/engine/test/test-object.c b/src/engine/test/test-object.c index 1cb6bfc03c..a96c3b3419 100644 --- a/src/engine/test/test-object.c +++ b/src/engine/test/test-object.c @@ -19,7 +19,7 @@ static void test_printable (const char *name, gpointer obj); static void test_foreach (QofBook *, const char *); static QofObject bus_obj = { - GNC_OBJECT_VERSION, + QOF_OBJECT_VERSION, TEST_MODULE_NAME, TEST_MODULE_DESC, NULL, /* create */ diff --git a/src/engine/test/test-period.c b/src/engine/test/test-period.c index fe3844caa9..bb7fa443fa 100644 --- a/src/engine/test/test-period.c +++ b/src/engine/test/test-period.c @@ -26,7 +26,7 @@ static void run_test (void) { - GNCSession *sess; + QofSession *sess; QofBook *openbook, *closedbook; AccountGroup *grp; AccountList *acclist, *anode; @@ -45,7 +45,7 @@ run_test (void) } sess = get_random_session (); - openbook = gnc_session_get_book (sess); + openbook = qof_session_get_book (sess); if (!openbook) { failure("book not created"); diff --git a/src/engine/test/test-query.c b/src/engine/test/test-query.c index 134cf1c9ff..9ef5c5ad01 100644 --- a/src/engine/test/test-query.c +++ b/src/engine/test/test-query.c @@ -14,7 +14,7 @@ static gboolean test_trans_query (Transaction *trans, gpointer data) { - GNCBook *book = data; + QofBook *book = data; GList *list; Query *q; @@ -48,19 +48,19 @@ test_trans_query (Transaction *trans, gpointer data) static void run_test (void) { - GNCSession *session; + QofSession *session; AccountGroup *group; - GNCBook *book; + QofBook *book; session = get_random_session (); - book = gnc_session_get_book (session); + book = qof_session_get_book (session); group = xaccGetAccountGroup (book); add_random_transactions_to_book (book, 20); xaccGroupForEachTransaction (group, test_trans_query, book); - gnc_session_destroy (session); + qof_session_destroy (session); } static void diff --git a/src/engine/test/test-resolve-file-path.c b/src/engine/test/test-resolve-file-path.c index 18c234c427..0f52dbeedf 100644 --- a/src/engine/test/test-resolve-file-path.c +++ b/src/engine/test/test-resolve-file-path.c @@ -5,7 +5,7 @@ #include "test-stuff.h" #include "gnc-engine-util.h" -#include "gnc-session.h" +#include "qofsession.h" struct test_strings_struct { diff --git a/src/engine/test/test-split-vs-account.c b/src/engine/test/test-split-vs-account.c index 6d74bd4f31..4230afcba7 100644 --- a/src/engine/test/test-split-vs-account.c +++ b/src/engine/test/test-split-vs-account.c @@ -6,7 +6,7 @@ #include "TransLog.h" #include "gnc-engine.h" #include "gnc-module.h" -#include "gnc-session.h" +#include "qofsession.h" #include "test-engine-stuff.h" #include "test-stuff.h" #include "Transaction.h" @@ -20,11 +20,11 @@ run_test (void) Account *act2; Split *spl; gnc_numeric num; - GNCSession *session; - GNCBook *book; + QofSession *session; + QofBook *book; - session = gnc_session_new (); - book = gnc_session_get_book (session); + session = qof_session_new (); + book = qof_session_get_book (session); act1 = get_random_account(book); if(!act1) diff --git a/src/engine/test/test-transaction-reversal.c b/src/engine/test/test-transaction-reversal.c index 647dcab9d8..8192b0fc14 100644 --- a/src/engine/test/test-transaction-reversal.c +++ b/src/engine/test/test-transaction-reversal.c @@ -7,7 +7,7 @@ #include "Transaction.h" #include "gnc-engine.h" #include "gnc-module.h" -#include "gnc-session.h" +#include "qofsession.h" #include "test-engine-stuff.h" #include "test-stuff.h" #include "Transaction.h" @@ -38,11 +38,11 @@ run_test (void) Account *acc1, *acc2; Transaction *transaction, *new_trans; gnc_numeric old, new, result; - GNCBook *book; + QofBook *book; char *msg; int i; - book = gnc_book_new(); + book = qof_book_new(); acc1 = get_random_account(book); acc2 = get_random_account(book); diff --git a/src/engine/test/test-transaction-voiding.c b/src/engine/test/test-transaction-voiding.c index 1ebd11d8b0..88dfc0ab62 100644 --- a/src/engine/test/test-transaction-voiding.c +++ b/src/engine/test/test-transaction-voiding.c @@ -7,7 +7,6 @@ #include "Transaction.h" #include "gnc-engine.h" #include "gnc-module.h" -#include "gnc-session.h" #include "test-engine-stuff.h" #include "test-stuff.h" #include "Transaction.h" @@ -38,13 +37,13 @@ run_test (void) Account *acc1, *acc2; Transaction *transaction; gnc_numeric old_amt, new_amt, old_val, new_val; - GNCBook *book; + QofBook *book; Timespec ts; time_t now; char *reason = "because I can"; - book = gnc_book_new(); + book = qof_book_new(); acc1 = get_random_account(book); acc2 = get_random_account(book); diff --git a/src/engine/xlate.pl b/src/engine/xlate.pl index 5d9edb27ce..b1a78d722e 100755 --- a/src/engine/xlate.pl +++ b/src/engine/xlate.pl @@ -13,6 +13,8 @@ foreach (@files) while () { + # s/GNCBook/QofBook/g; + # s/GncObject_t/QofObject/g; # s/gncObjectLookup/qof_object_lookup/g; # s/gncObjectRegister/qof_object_register/g; @@ -176,7 +178,25 @@ foreach (@files) # s/xaccRemoveEntity/qof_entity_remove/g; # s/xaccForeachEntity/qof_entity_foreach/g; - s/foreachObjectCB/QofEntityForeachCB/g; + # s/foreachObjectCB/QofEntityForeachCB/g; + s/GNC_OBJECT_VERSION/QOF_OBJECT_VERSION/g; + + # s/GNCSession/QofSession/g; + # s/gnc_session/qof_session/g; + # s/GNCPercentageFunc/QofPercentageFunc/g; + # s/gnc_get_current_session/qof_session_get_current_session/g; + # s/gnc_set_current_session/qof_session_set_current_session/g; + + # s/ Backend/ QofBackend/g; + # s/\(Backend/\(QofBackend/g; + # s/GNCBackendError/QofBackendError/g; + # s/GNCBePercentageFunc/QofBePercentageFunc/g; + # s/xaccBackendSetError/qof_backend_set_error/g; + # s/xaccBackendGetError/qof_backend_get_error/g; + # s/xaccBackendSetMessage/qof_backend_set_message/g; + # s/xaccBackendGetMessage/qof_backend_get_message/g; + # s/xaccInitBackend/qof_backend_init/g; + print OF $_; }