mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
rename gncObject to QofObject
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@8689 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
50906151db
commit
5770f0ca0d
@ -46,10 +46,10 @@
|
|||||||
#include "kvp-util-p.h"
|
#include "kvp-util-p.h"
|
||||||
#include "messages.h"
|
#include "messages.h"
|
||||||
|
|
||||||
#include "gncObject.h"
|
|
||||||
#include "QueryObject.h"
|
#include "QueryObject.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
static short module = MOD_ACCOUNT;
|
static short module = MOD_ACCOUNT;
|
||||||
|
|
||||||
@ -3175,7 +3175,7 @@ account_foreach (QofBook *book, foreachObjectCB cb, gpointer ud)
|
|||||||
xaccForeachEntity (et, GNC_ID_ACCOUNT, cb, ud);
|
xaccForeachEntity (et, GNC_ID_ACCOUNT, cb, ud);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GncObject_t account_object_def = {
|
static QofObject account_object_def = {
|
||||||
GNC_OBJECT_VERSION,
|
GNC_OBJECT_VERSION,
|
||||||
GNC_ID_ACCOUNT,
|
GNC_ID_ACCOUNT,
|
||||||
"Account",
|
"Account",
|
||||||
@ -3208,7 +3208,7 @@ gboolean xaccAccountRegister (void)
|
|||||||
|
|
||||||
gncQueryObjectRegister (GNC_ID_ACCOUNT, (QuerySort)xaccAccountOrder, params);
|
gncQueryObjectRegister (GNC_ID_ACCOUNT, (QuerySort)xaccAccountOrder, params);
|
||||||
|
|
||||||
return gncObjectRegister (&account_object_def);
|
return qof_object_register (&account_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ======================= END OF FILE =========================== */
|
/* ======================= END OF FILE =========================== */
|
||||||
|
@ -38,9 +38,9 @@
|
|||||||
#include "gnc-engine-util.h"
|
#include "gnc-engine-util.h"
|
||||||
#include "gnc-event-p.h"
|
#include "gnc-event-p.h"
|
||||||
#include "gnc-numeric.h"
|
#include "gnc-numeric.h"
|
||||||
#include "gncObject.h"
|
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
static short module = MOD_ENGINE;
|
static short module = MOD_ENGINE;
|
||||||
|
|
||||||
@ -1315,7 +1315,7 @@ group_mark_clean(QofBook *book)
|
|||||||
xaccGroupMarkSaved(xaccGetAccountGroup(book));
|
xaccGroupMarkSaved(xaccGetAccountGroup(book));
|
||||||
}
|
}
|
||||||
|
|
||||||
static GncObject_t group_object_def =
|
static QofObject group_object_def =
|
||||||
{
|
{
|
||||||
interface_version: GNC_OBJECT_VERSION,
|
interface_version: GNC_OBJECT_VERSION,
|
||||||
name: GNC_ID_GROUP,
|
name: GNC_ID_GROUP,
|
||||||
@ -1331,7 +1331,7 @@ static GncObject_t group_object_def =
|
|||||||
gboolean
|
gboolean
|
||||||
xaccGroupRegister (void)
|
xaccGroupRegister (void)
|
||||||
{
|
{
|
||||||
return gncObjectRegister (&group_object_def);
|
return qof_object_register (&group_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================= END OF FILE ======================== */
|
/* ========================= END OF FILE ======================== */
|
||||||
|
@ -40,12 +40,12 @@ libgncmod_engine_la_SOURCES = \
|
|||||||
gnc-trace.c \
|
gnc-trace.c \
|
||||||
gncmod-engine.c \
|
gncmod-engine.c \
|
||||||
guid.c \
|
guid.c \
|
||||||
gncObject.c \
|
|
||||||
kvp_frame.c \
|
kvp_frame.c \
|
||||||
kvp-util.c \
|
kvp-util.c \
|
||||||
md5.c \
|
md5.c \
|
||||||
messages.c \
|
messages.c \
|
||||||
qofbook.c
|
qofbook.c \
|
||||||
|
qofobject.c
|
||||||
|
|
||||||
EXTRA_libgncmod_engine_la_SOURCES = iso-4217-currencies.c
|
EXTRA_libgncmod_engine_la_SOURCES = iso-4217-currencies.c
|
||||||
|
|
||||||
@ -89,7 +89,8 @@ gncinclude_HEADERS = \
|
|||||||
kvp-scm.h \
|
kvp-scm.h \
|
||||||
kvp-util.h \
|
kvp-util.h \
|
||||||
messages.h \
|
messages.h \
|
||||||
qofbook.h
|
qofbook.h \
|
||||||
|
qofobject.h
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
AccountP.h \
|
AccountP.h \
|
||||||
@ -111,12 +112,12 @@ noinst_HEADERS = \
|
|||||||
gnc-lot-p.h \
|
gnc-lot-p.h \
|
||||||
gnc-pricedb-p.h \
|
gnc-pricedb-p.h \
|
||||||
gnc-session-p.h \
|
gnc-session-p.h \
|
||||||
gncObjectP.h \
|
|
||||||
kvp-util-p.h \
|
kvp-util-p.h \
|
||||||
md5.h \
|
md5.h \
|
||||||
gw-engine.h \
|
gw-engine.h \
|
||||||
gw-kvp.h \
|
gw-kvp.h \
|
||||||
qofbook-p.h
|
qofbook-p.h \
|
||||||
|
qofobject-p.h
|
||||||
|
|
||||||
noinst_SCRIPTS = iso-currencies-to-c
|
noinst_SCRIPTS = iso-currencies-to-c
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "gnc-engine-util.h"
|
#include "gnc-engine-util.h"
|
||||||
#include "gncObject.h"
|
|
||||||
#include "BackendP.h"
|
#include "BackendP.h"
|
||||||
|
|
||||||
#include "QueryObjectP.h"
|
#include "QueryObjectP.h"
|
||||||
@ -38,12 +37,13 @@
|
|||||||
#include "QueryNewP.h"
|
#include "QueryNewP.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
static short module = MOD_QUERY;
|
static short module = MOD_QUERY;
|
||||||
|
|
||||||
typedef struct query_new_term {
|
typedef struct query_new_term {
|
||||||
GSList * param_list;
|
GSList * param_list;
|
||||||
QueryPredData_t pdata;
|
QueryPredData_t pdata;
|
||||||
gboolean invert;
|
gboolean invert;
|
||||||
|
|
||||||
/* These values are filled in during "compilation" of the query
|
/* These values are filled in during "compilation" of the query
|
||||||
@ -52,22 +52,22 @@ typedef struct query_new_term {
|
|||||||
* convert types.
|
* convert types.
|
||||||
*/
|
*/
|
||||||
GSList * param_fcns;
|
GSList * param_fcns;
|
||||||
QueryPredicate pred_fcn;
|
QueryPredicate pred_fcn;
|
||||||
} QueryNewTerm;
|
} QueryNewTerm;
|
||||||
|
|
||||||
typedef struct query_new_sort {
|
typedef struct query_new_sort {
|
||||||
GSList * param_list;
|
GSList * param_list;
|
||||||
gint options;
|
gint options;
|
||||||
gboolean increasing;
|
gboolean increasing;
|
||||||
|
|
||||||
/* These values are filled in during "compilation" of the query
|
/* These values are filled in during "compilation" of the query
|
||||||
* term, based upon the obj_name, param_name, and searched-for
|
* term, based upon the obj_name, param_name, and searched-for
|
||||||
* object type. If conv_fcn is NULL, then we don't know how to
|
* object type. If conv_fcn is NULL, then we don't know how to
|
||||||
* convert types.
|
* convert types.
|
||||||
*/
|
*/
|
||||||
gboolean use_default;
|
gboolean use_default;
|
||||||
GSList * param_fcns;
|
GSList * param_fcns;
|
||||||
QuerySort obj_cmp; /* In case you are comparing objects */
|
QuerySort obj_cmp; /* In case you are comparing objects */
|
||||||
QueryCompare comp_fcn; /* When you are comparing core types */
|
QueryCompare comp_fcn; /* When you are comparing core types */
|
||||||
} QueryNewSort;
|
} QueryNewSort;
|
||||||
|
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include "gncObject.h"
|
|
||||||
#include "gnc-engine.h"
|
#include "gnc-engine.h"
|
||||||
#include "gnc-trace.h"
|
#include "gnc-trace.h"
|
||||||
#include "Group.h"
|
#include "Group.h"
|
||||||
@ -48,6 +47,7 @@
|
|||||||
#include "SX-book-p.h"
|
#include "SX-book-p.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
static short module = MOD_SX;
|
static short module = MOD_SX;
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ sxtt_mark_clean(QofBook *book)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static GncObject_t sxtt_object_def =
|
static QofObject sxtt_object_def =
|
||||||
{
|
{
|
||||||
interface_version: GNC_OBJECT_VERSION,
|
interface_version: GNC_OBJECT_VERSION,
|
||||||
name: GNC_ID_SXTT,
|
name: GNC_ID_SXTT,
|
||||||
@ -221,7 +221,7 @@ static GncObject_t sxtt_object_def =
|
|||||||
gboolean
|
gboolean
|
||||||
gnc_sxtt_register (void)
|
gnc_sxtt_register (void)
|
||||||
{
|
{
|
||||||
return gncObjectRegister (&sxtt_object_def);
|
return qof_object_register (&sxtt_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================== END OF FILE =============================== */
|
/* ========================== END OF FILE =============================== */
|
||||||
|
@ -48,8 +48,8 @@
|
|||||||
#include "messages.h"
|
#include "messages.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
#include "gncObject.h"
|
|
||||||
#include "QueryObject.h"
|
#include "QueryObject.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3561,7 +3561,7 @@ split_foreach (QofBook *book, foreachObjectCB fcn, gpointer user_data)
|
|||||||
|
|
||||||
/* hook into the gncObject registry */
|
/* hook into the gncObject registry */
|
||||||
|
|
||||||
static GncObject_t split_object_def = {
|
static QofObject split_object_def = {
|
||||||
GNC_OBJECT_VERSION,
|
GNC_OBJECT_VERSION,
|
||||||
GNC_ID_SPLIT,
|
GNC_ID_SPLIT,
|
||||||
"Split",
|
"Split",
|
||||||
@ -3638,7 +3638,7 @@ gboolean xaccSplitRegister (void)
|
|||||||
(QuerySort)xaccSplitCompareOtherAccountCodes,
|
(QuerySort)xaccSplitCompareOtherAccountCodes,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
return gncObjectRegister (&split_object_def);
|
return qof_object_register (&split_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -3647,7 +3647,7 @@ trans_foreach (QofBook *book, foreachObjectCB fcn, gpointer user_data)
|
|||||||
do_foreach (book, GNC_ID_TRANS, fcn, user_data);
|
do_foreach (book, GNC_ID_TRANS, fcn, user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GncObject_t trans_object_def = {
|
static QofObject trans_object_def = {
|
||||||
GNC_OBJECT_VERSION,
|
GNC_OBJECT_VERSION,
|
||||||
GNC_ID_TRANS,
|
GNC_ID_TRANS,
|
||||||
"Transaction",
|
"Transaction",
|
||||||
@ -3691,7 +3691,7 @@ gboolean xaccTransRegister (void)
|
|||||||
|
|
||||||
gncQueryObjectRegister (GNC_ID_TRANS, (QuerySort)xaccTransOrder, params);
|
gncQueryObjectRegister (GNC_ID_TRANS, (QuerySort)xaccTransOrder, params);
|
||||||
|
|
||||||
return gncObjectRegister (&trans_object_def);
|
return qof_object_register (&trans_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************ END OF ************************************\
|
/************************ END OF ************************************\
|
||||||
|
@ -1,104 +0,0 @@
|
|||||||
/********************************************************************\
|
|
||||||
* gnc-book-p.h -- private functions for gnc books. *
|
|
||||||
* *
|
|
||||||
* 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 *
|
|
||||||
* *
|
|
||||||
\********************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HISTORY:
|
|
||||||
* Created 2001 by Rob Browning
|
|
||||||
* Copyright (c) 2001 Rob Browning
|
|
||||||
* Copyright (c) 2001,2003 Linas Vepstas <linas@linas.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef GNC_BOOK_P_H
|
|
||||||
#define GNC_BOOK_P_H
|
|
||||||
|
|
||||||
#include "Backend.h"
|
|
||||||
#include "GNCIdP.h"
|
|
||||||
#include "gnc-book.h"
|
|
||||||
#include "kvp_frame.h"
|
|
||||||
|
|
||||||
struct gnc_book_struct
|
|
||||||
{
|
|
||||||
/* Unique guid for this book. */
|
|
||||||
GUID guid;
|
|
||||||
|
|
||||||
/* The kvp_frame provides a place for top-level data associated
|
|
||||||
* with this book. */
|
|
||||||
kvp_frame *kvp_data;
|
|
||||||
|
|
||||||
/* The entity table associates the GUIDs of all the objects
|
|
||||||
* belonging to this book, with their pointers to the respective
|
|
||||||
* objects. This allows a lookup of objects based on thier guid.
|
|
||||||
*/
|
|
||||||
GNCEntityTable *entity_table;
|
|
||||||
|
|
||||||
/* In order to store arbitrary data, for extensibility, add a table
|
|
||||||
* that will be used to hold arbitrary pointers.
|
|
||||||
*/
|
|
||||||
GHashTable *data_tables;
|
|
||||||
|
|
||||||
/* state flag: 'y' means 'open for editing',
|
|
||||||
* 'n' means 'book is closed'
|
|
||||||
*/
|
|
||||||
char book_open;
|
|
||||||
|
|
||||||
/* dirty/clean flag. If dirty, then this book has been modified,
|
|
||||||
* but has not yet been written out to storage (file/database)
|
|
||||||
*/
|
|
||||||
gboolean dirty;
|
|
||||||
|
|
||||||
/* version number, used for tracking multiuser updates */
|
|
||||||
gint32 version;
|
|
||||||
|
|
||||||
/* To be technically correct, backends belong to sessions and
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------- */
|
|
||||||
/* Backend private expansion data */
|
|
||||||
guint32 idata; /* used by the sql backend for kvp management */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These gnc_book_set_*() routines are used by backends to
|
|
||||||
* initialize the pointers in the book structure to
|
|
||||||
* something that contains actual data. These routines
|
|
||||||
* should not be used otherwise. (Its somewhat questionable
|
|
||||||
* if the backends should even be doing this much, but for
|
|
||||||
* backwards compatibility, we leave these here.)
|
|
||||||
*/
|
|
||||||
void gnc_book_set_guid(GNCBook *book, GUID guid);
|
|
||||||
void gnc_book_set_schedxactions( GNCBook *book, GList *newList );
|
|
||||||
|
|
||||||
void gnc_book_set_backend (GNCBook *book, Backend *be);
|
|
||||||
|
|
||||||
/* The gnc_book_mark_saved() routine marks the book as having been
|
|
||||||
* saved (to a file, to a database). Used by backends to mark the
|
|
||||||
* notsaved flag as FALSE just after loading. Do not use otherwise!
|
|
||||||
*/
|
|
||||||
void gnc_book_mark_saved(GNCBook *book);
|
|
||||||
|
|
||||||
/* Register books with the engine */
|
|
||||||
gboolean gnc_book_register (void);
|
|
||||||
|
|
||||||
#endif /* GNC_BOOK_P_H */
|
|
@ -1,306 +0,0 @@
|
|||||||
/********************************************************************\
|
|
||||||
* gnc-book.c -- dataset access (set of accounting books) *
|
|
||||||
* *
|
|
||||||
* 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-book.c
|
|
||||||
*
|
|
||||||
* FUNCTION:
|
|
||||||
* Encapsulate all the information about a gnucash dataset.
|
|
||||||
* See src/doc/books.txt for design overview.
|
|
||||||
*
|
|
||||||
* HISTORY:
|
|
||||||
* Created by Linas Vepstas December 1998
|
|
||||||
* Copyright (c) 1998-2001,2003 Linas Vepstas <linas@linas.org>
|
|
||||||
* Copyright (c) 2000 Dave Peticolas
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
#include "Backend.h"
|
|
||||||
#include "BackendP.h"
|
|
||||||
#include "QueryObject.h"
|
|
||||||
#include "gnc-book.h"
|
|
||||||
#include "gnc-book-p.h"
|
|
||||||
#include "gnc-event.h"
|
|
||||||
#include "gnc-event-p.h"
|
|
||||||
#include "gnc-trace.h"
|
|
||||||
#include "gncObjectP.h"
|
|
||||||
|
|
||||||
static short module = MOD_ENGINE;
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
/* constructor / destructor */
|
|
||||||
|
|
||||||
static void
|
|
||||||
gnc_book_init (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return;
|
|
||||||
|
|
||||||
book->entity_table = xaccEntityTableNew ();
|
|
||||||
|
|
||||||
xaccGUIDNew(&book->guid, book);
|
|
||||||
xaccStoreEntity(book->entity_table, book, &book->guid, GNC_ID_BOOK);
|
|
||||||
|
|
||||||
book->kvp_data = kvp_frame_new ();
|
|
||||||
|
|
||||||
book->data_tables = g_hash_table_new (g_str_hash, g_str_equal);
|
|
||||||
|
|
||||||
book->book_open = 'y';
|
|
||||||
book->version = 0;
|
|
||||||
book->idata = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
GNCBook *
|
|
||||||
gnc_book_new (void)
|
|
||||||
{
|
|
||||||
GNCBook *book;
|
|
||||||
|
|
||||||
ENTER (" ");
|
|
||||||
book = g_new0(GNCBook, 1);
|
|
||||||
gnc_book_init(book);
|
|
||||||
gncObjectBookBegin (book);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
gnc_engine_generate_event (&book->guid, GNC_EVENT_CREATE);
|
|
||||||
#endif
|
|
||||||
LEAVE ("book=%p", book);
|
|
||||||
return book;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gnc_book_destroy (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return;
|
|
||||||
|
|
||||||
ENTER ("book=%p", book);
|
|
||||||
gnc_engine_force_event (&book->guid, GNC_EVENT_DESTROY);
|
|
||||||
|
|
||||||
gncObjectBookEnd (book);
|
|
||||||
|
|
||||||
xaccRemoveEntity (book->entity_table, &book->guid);
|
|
||||||
xaccEntityTableDestroy (book->entity_table);
|
|
||||||
book->entity_table = NULL;
|
|
||||||
|
|
||||||
/* FIXME: Make sure the data_table is empty */
|
|
||||||
g_hash_table_destroy (book->data_tables);
|
|
||||||
|
|
||||||
g_free (book);
|
|
||||||
LEAVE ("book=%p", book);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
/* XXX this should probably be calling is_equal callbacks on gncObject */
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
gnc_book_equal (GNCBook *book_1, GNCBook *book_2)
|
|
||||||
{
|
|
||||||
if (book_1 == book_2) return TRUE;
|
|
||||||
if (!book_1 || !book_2) return FALSE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
gnc_book_not_saved(GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return FALSE;
|
|
||||||
|
|
||||||
return(book->dirty || gncObjectIsDirty (book));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gnc_book_mark_saved(GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return;
|
|
||||||
|
|
||||||
book->dirty = FALSE;
|
|
||||||
gncObjectMarkClean (book);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
/* getters */
|
|
||||||
|
|
||||||
const GUID *
|
|
||||||
gnc_book_get_guid (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return NULL;
|
|
||||||
return &book->guid;
|
|
||||||
}
|
|
||||||
|
|
||||||
kvp_frame *
|
|
||||||
gnc_book_get_slots (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return NULL;
|
|
||||||
return book->kvp_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
GNCEntityTable *
|
|
||||||
gnc_book_get_entity_table (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return NULL;
|
|
||||||
return book->entity_table;
|
|
||||||
}
|
|
||||||
|
|
||||||
Backend *
|
|
||||||
xaccGNCBookGetBackend (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return NULL;
|
|
||||||
return book->backend;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
/* setters */
|
|
||||||
|
|
||||||
void
|
|
||||||
gnc_book_set_guid (GNCBook *book, GUID uid)
|
|
||||||
{
|
|
||||||
if (!book) return;
|
|
||||||
|
|
||||||
if (guid_equal (&book->guid, &uid)) return;
|
|
||||||
|
|
||||||
xaccRemoveEntity(book->entity_table, &book->guid);
|
|
||||||
book->guid = uid;
|
|
||||||
xaccStoreEntity(book->entity_table, book, &book->guid, GNC_ID_BOOK);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gnc_book_set_backend (GNCBook *book, Backend *be)
|
|
||||||
{
|
|
||||||
if (!book) return;
|
|
||||||
ENTER ("book=%p be=%p", book, be);
|
|
||||||
book->backend = be;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpointer gnc_book_get_backend (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return NULL;
|
|
||||||
return (gpointer)book->backend;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void gnc_book_kvp_changed (GNCBook *book)
|
|
||||||
{
|
|
||||||
if (!book) return;
|
|
||||||
book->dirty = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
|
|
||||||
/* Store arbitrary pointers in the GNCBook for data storage extensibility */
|
|
||||||
/* XXX if data is NULL, we ashould remove the key from the hash table!
|
|
||||||
*
|
|
||||||
* XXX We need some design comments: an equivalent storage mechanism
|
|
||||||
* would have been to give each item a GUID, store the GUID in a kvp frame,
|
|
||||||
* and then do a GUID lookup to get the pointer to the actual object.
|
|
||||||
* Of course, doing a kvp lookup followed by a GUID lookup would be
|
|
||||||
* a good bit slower, but may be that's OK? In most cases, book data
|
|
||||||
* is accessed only infrequently? --linas
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gnc_book_set_data (GNCBook *book, const char *key, gpointer data)
|
|
||||||
{
|
|
||||||
if (!book || !key) return;
|
|
||||||
g_hash_table_insert (book->data_tables, (gpointer)key, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
gpointer
|
|
||||||
gnc_book_get_data (GNCBook *book, const char *key)
|
|
||||||
{
|
|
||||||
if (!book || !key) return NULL;
|
|
||||||
return g_hash_table_lookup (book->data_tables, (gpointer)key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====================================================================== */
|
|
||||||
|
|
||||||
gint64
|
|
||||||
gnc_book_get_counter (GNCBook *book, const char *counter_name)
|
|
||||||
{
|
|
||||||
Backend *be;
|
|
||||||
kvp_frame *kvp;
|
|
||||||
kvp_value *value;
|
|
||||||
gint64 counter;
|
|
||||||
|
|
||||||
if (!book) {
|
|
||||||
PWARN ("No book!!!");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!counter_name || *counter_name == '\0') {
|
|
||||||
PWARN ("Invalid counter name.");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If we've got a backend with a counter method, call it */
|
|
||||||
be = book->backend;
|
|
||||||
if (be && be->counter)
|
|
||||||
return ((be->counter)(be, counter_name));
|
|
||||||
|
|
||||||
/* If not, then use the KVP in the book */
|
|
||||||
kvp = gnc_book_get_slots (book);
|
|
||||||
|
|
||||||
if (!kvp) {
|
|
||||||
PWARN ("Book has no KVP_Frame");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
value = kvp_frame_get_slot_path (kvp, "counters", counter_name, NULL);
|
|
||||||
if (value) {
|
|
||||||
/* found it */
|
|
||||||
counter = kvp_value_get_gint64 (value);
|
|
||||||
} else {
|
|
||||||
/* New counter */
|
|
||||||
counter = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Counter is now valid; increment it */
|
|
||||||
counter++;
|
|
||||||
|
|
||||||
/* Save off the new counter */
|
|
||||||
value = kvp_value_new_gint64 (counter);
|
|
||||||
kvp_frame_set_slot_path (kvp, value, "counters", counter_name, NULL);
|
|
||||||
kvp_value_delete (value);
|
|
||||||
|
|
||||||
/* and return the value */
|
|
||||||
return counter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* gncObject function implementation and registration */
|
|
||||||
gboolean gnc_book_register (void)
|
|
||||||
{
|
|
||||||
static QueryObjectDef params[] = {
|
|
||||||
{ BOOK_KVP, QUERYCORE_KVP, (QueryAccess)gnc_book_get_slots },
|
|
||||||
{ QUERY_PARAM_GUID, QUERYCORE_GUID, (QueryAccess)gnc_book_get_guid },
|
|
||||||
{ NULL },
|
|
||||||
};
|
|
||||||
|
|
||||||
gncQueryObjectRegister (GNC_ID_BOOK, NULL, params);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ========================== END OF FILE =============================== */
|
|
@ -31,12 +31,12 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include "gncObject.h"
|
|
||||||
#include "gnc-commodity.h"
|
#include "gnc-commodity.h"
|
||||||
#include "gnc-engine-util.h"
|
#include "gnc-engine-util.h"
|
||||||
#include "gnc-trace.h"
|
#include "gnc-trace.h"
|
||||||
#include "guid.h"
|
#include "guid.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
static short module = MOD_ENGINE;
|
static short module = MOD_ENGINE;
|
||||||
|
|
||||||
@ -1124,7 +1124,7 @@ commodity_table_book_end (QofBook *book)
|
|||||||
* Don't we have to save user-created/modified commodities?
|
* Don't we have to save user-created/modified commodities?
|
||||||
* I don't get it ... does this need fixing?
|
* I don't get it ... does this need fixing?
|
||||||
*/
|
*/
|
||||||
static GncObject_t commodity_table_object_def =
|
static QofObject commodity_table_object_def =
|
||||||
{
|
{
|
||||||
interface_version: GNC_OBJECT_VERSION,
|
interface_version: GNC_OBJECT_VERSION,
|
||||||
name: GNC_ID_COMMODITY_TABLE,
|
name: GNC_ID_COMMODITY_TABLE,
|
||||||
@ -1140,7 +1140,7 @@ static GncObject_t commodity_table_object_def =
|
|||||||
gboolean
|
gboolean
|
||||||
gnc_commodity_table_register (void)
|
gnc_commodity_table_register (void)
|
||||||
{
|
{
|
||||||
return gncObjectRegister (&commodity_table_object_def);
|
return qof_object_register (&commodity_table_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================= END OF FILE ============================== */
|
/* ========================= END OF FILE ============================== */
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "GNCIdP.h"
|
#include "GNCIdP.h"
|
||||||
#include "QueryNewP.h"
|
#include "QueryNewP.h"
|
||||||
#include "gncObjectP.h"
|
|
||||||
#include "gnc-engine.h"
|
#include "gnc-engine.h"
|
||||||
#include "gnc-engine-util.h"
|
#include "gnc-engine-util.h"
|
||||||
|
|
||||||
@ -40,6 +39,7 @@
|
|||||||
#include "gnc-pricedb-p.h"
|
#include "gnc-pricedb-p.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject-p.h"
|
||||||
|
|
||||||
static GList * engine_init_hooks = NULL;
|
static GList * engine_init_hooks = NULL;
|
||||||
static int engine_is_initialized = 0;
|
static int engine_is_initialized = 0;
|
||||||
@ -81,7 +81,7 @@ gnc_engine_init(int argc, char ** argv)
|
|||||||
gnc_engine_get_string_cache();
|
gnc_engine_get_string_cache();
|
||||||
|
|
||||||
xaccGUIDInit ();
|
xaccGUIDInit ();
|
||||||
gncObjectInitialize ();
|
qof_object_initialize ();
|
||||||
gncQueryNewInit ();
|
gncQueryNewInit ();
|
||||||
|
|
||||||
/* Now register our core types */
|
/* Now register our core types */
|
||||||
@ -117,7 +117,7 @@ gnc_engine_shutdown (void)
|
|||||||
|
|
||||||
gnc_engine_string_cache_destroy ();
|
gnc_engine_string_cache_destroy ();
|
||||||
|
|
||||||
gncObjectShutdown ();
|
qof_object_shutdown ();
|
||||||
xaccGUIDShutdown ();
|
xaccGUIDShutdown ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,6 @@
|
|||||||
|
|
||||||
#include "BackendP.h"
|
#include "BackendP.h"
|
||||||
#include "GNCIdP.h"
|
#include "GNCIdP.h"
|
||||||
#include "gncObject.h"
|
|
||||||
#include "gnc-engine.h"
|
#include "gnc-engine.h"
|
||||||
#include "gnc-engine-util.h"
|
#include "gnc-engine-util.h"
|
||||||
#include "gnc-event-p.h"
|
#include "gnc-event-p.h"
|
||||||
@ -38,6 +37,7 @@
|
|||||||
#include "kvp-util.h"
|
#include "kvp-util.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject.h"
|
||||||
|
|
||||||
/* This static indicates the debugging module that this .o belongs to. */
|
/* This static indicates the debugging module that this .o belongs to. */
|
||||||
static short module = MOD_PRICE;
|
static short module = MOD_PRICE;
|
||||||
@ -1949,7 +1949,7 @@ pricedb_mark_clean(QofBook *book)
|
|||||||
gnc_pricedb_mark_clean(gnc_pricedb_get_db(book));
|
gnc_pricedb_mark_clean(gnc_pricedb_get_db(book));
|
||||||
}
|
}
|
||||||
|
|
||||||
static GncObject_t pricedb_object_def =
|
static QofObject pricedb_object_def =
|
||||||
{
|
{
|
||||||
interface_version: GNC_OBJECT_VERSION,
|
interface_version: GNC_OBJECT_VERSION,
|
||||||
name: GNC_ID_PRICEDB,
|
name: GNC_ID_PRICEDB,
|
||||||
@ -1965,7 +1965,7 @@ static GncObject_t pricedb_object_def =
|
|||||||
gboolean
|
gboolean
|
||||||
gnc_pricedb_register (void)
|
gnc_pricedb_register (void)
|
||||||
{
|
{
|
||||||
return gncObjectRegister (&pricedb_object_def);
|
return qof_object_register (&pricedb_object_def);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================= END OF FILE ============================== */
|
/* ========================= END OF FILE ============================== */
|
||||||
|
@ -1,112 +1,18 @@
|
|||||||
/********************************************************************\
|
#include "qofobject.h"
|
||||||
* gncObject.h -- the Core 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 *
|
|
||||||
* 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 gncObject.h
|
|
||||||
* @breif the Core Object Registration/Lookup Interface
|
|
||||||
*
|
|
||||||
* @author Copyright (c) 2001,2002, Derek Atkins <warlord@MIT.EDU>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef GNC_OBJECT_H_
|
|
||||||
#define GNC_OBJECT_H_
|
|
||||||
|
|
||||||
#include "GNCId.h"
|
|
||||||
#include "qofbook.h"
|
|
||||||
|
|
||||||
/* Defines the version of the core object object registration
|
|
||||||
* interface. Only object modules compiled against this version
|
|
||||||
* of the interface will load properly
|
|
||||||
*/
|
|
||||||
#define GNC_OBJECT_VERSION 1
|
|
||||||
|
|
||||||
typedef struct _gncObjectDef GncObject_t;
|
|
||||||
typedef void (*foreachTypeCB) (GncObject_t *type, gpointer user_data);
|
|
||||||
typedef void (*foreachBackendTypeCB) (GNCIdTypeConst type,
|
|
||||||
gpointer backend_data,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
/* This is the Object Object descriptor */
|
|
||||||
struct _gncObjectDef {
|
|
||||||
gint interface_version; /* of this object interface */
|
|
||||||
GNCIdType name; /* the Object's GNC_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 *);
|
|
||||||
|
|
||||||
/* Determine if there are any dirty items in this book */
|
|
||||||
gboolean (*is_dirty)(QofBook *);
|
|
||||||
|
|
||||||
/* Mark this object's book clean (for after a load) */
|
|
||||||
void (*mark_clean)(QofBook *);
|
|
||||||
|
|
||||||
/* foreach() is used to execute a callback over each object
|
|
||||||
* stored in the particular book
|
|
||||||
*/
|
|
||||||
void (*foreach)(QofBook *, foreachObjectCB, gpointer);
|
|
||||||
|
|
||||||
/* Given a particular object, return a printable string */
|
|
||||||
const char * (*printable)(gpointer obj);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
void gncObjectForeachType (foreachTypeCB cb, gpointer user_data);
|
|
||||||
|
|
||||||
void gncObjectForeach (GNCIdTypeConst type_name, QofBook *book,
|
|
||||||
foreachObjectCB cb, gpointer user_data);
|
|
||||||
|
|
||||||
const char * gncObjectPrintable (GNCIdTypeConst type_name, gpointer obj);
|
|
||||||
|
|
||||||
|
|
||||||
/* REGISTRATION AND REG-LOOKUP FUNCTIONS */
|
#define GncObject_t QofObject
|
||||||
|
#define gncObjectLookup qof_object_lookup
|
||||||
|
#define gncObjectRegister qof_object_register
|
||||||
|
#define gncObjectGetTypeLabel qof_object_get_type_label
|
||||||
|
#define gncObjectRegisterBackend qof_object_register_backend
|
||||||
|
#define gncObjectLookupBackend qof_object_lookup_backend
|
||||||
|
#define gncObjectForeachBackend qof_object_foreach_backend
|
||||||
|
|
||||||
/** Register new types of object objects */
|
#define gncObjectInitialize qof_object_initialize
|
||||||
gboolean gncObjectRegister (const GncObject_t *object);
|
#define gncObjectShutdown qof_object_shutdown
|
||||||
|
#define gncObjectBookBegin qof_object_book_begin
|
||||||
|
#define gncObjectBookEnd qof_object_book_end
|
||||||
|
#define gncObjectIsDirty qof_object_is_dirty
|
||||||
|
#define gncObjectMarkClean qof_object_mark_clean
|
||||||
|
|
||||||
/** Get the printable label for a type. This label is *not*
|
|
||||||
* translated; you must use _() on it if you want a translated version.
|
|
||||||
*/
|
|
||||||
const char * gncObjectGetTypeLabel (GNCIdTypeConst type_name);
|
|
||||||
|
|
||||||
/** Lookup a object definition */
|
|
||||||
const GncObject_t * gncObjectLookup (GNCIdTypeConst type_name);
|
|
||||||
|
|
||||||
|
|
||||||
/** Register and lookup backend-specific data for this particular object */
|
|
||||||
gboolean gncObjectRegisterBackend (GNCIdTypeConst type_name,
|
|
||||||
const char *backend_name,
|
|
||||||
gpointer be_data);
|
|
||||||
|
|
||||||
gpointer gncObjectLookupBackend (GNCIdTypeConst type_name,
|
|
||||||
const char *backend_name);
|
|
||||||
|
|
||||||
void gncObjectForeachBackend (const char *backend_name,
|
|
||||||
foreachBackendTypeCB cb,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
#endif /* GNC_OBJECT_H_ */
|
|
||||||
/** @} */
|
|
||||||
|
@ -46,9 +46,9 @@
|
|||||||
#include "gnc-event.h"
|
#include "gnc-event.h"
|
||||||
#include "gnc-event-p.h"
|
#include "gnc-event-p.h"
|
||||||
#include "gnc-trace.h"
|
#include "gnc-trace.h"
|
||||||
#include "gncObjectP.h"
|
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
#include "qofbook-p.h"
|
#include "qofbook-p.h"
|
||||||
|
#include "qofobject-p.h"
|
||||||
|
|
||||||
static short module = MOD_ENGINE;
|
static short module = MOD_ENGINE;
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ qof_book_new (void)
|
|||||||
ENTER (" ");
|
ENTER (" ");
|
||||||
book = g_new0(QofBook, 1);
|
book = g_new0(QofBook, 1);
|
||||||
qof_book_init(book);
|
qof_book_init(book);
|
||||||
gncObjectBookBegin (book);
|
qof_object_book_begin (book);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
gnc_engine_generate_event (&book->guid, GNC_EVENT_CREATE);
|
gnc_engine_generate_event (&book->guid, GNC_EVENT_CREATE);
|
||||||
@ -99,7 +99,7 @@ qof_book_destroy (QofBook *book)
|
|||||||
ENTER ("book=%p", book);
|
ENTER ("book=%p", book);
|
||||||
gnc_engine_force_event (&book->guid, GNC_EVENT_DESTROY);
|
gnc_engine_force_event (&book->guid, GNC_EVENT_DESTROY);
|
||||||
|
|
||||||
gncObjectBookEnd (book);
|
qof_object_book_end (book);
|
||||||
|
|
||||||
xaccRemoveEntity (book->entity_table, &book->guid);
|
xaccRemoveEntity (book->entity_table, &book->guid);
|
||||||
xaccEntityTableDestroy (book->entity_table);
|
xaccEntityTableDestroy (book->entity_table);
|
||||||
@ -130,7 +130,7 @@ qof_book_not_saved(QofBook *book)
|
|||||||
{
|
{
|
||||||
if (!book) return FALSE;
|
if (!book) return FALSE;
|
||||||
|
|
||||||
return(book->dirty || gncObjectIsDirty (book));
|
return(book->dirty || qof_object_is_dirty (book));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -139,7 +139,7 @@ qof_book_mark_saved(QofBook *book)
|
|||||||
if (!book) return;
|
if (!book) return;
|
||||||
|
|
||||||
book->dirty = FALSE;
|
book->dirty = FALSE;
|
||||||
gncObjectMarkClean (book);
|
qof_object_mark_clean (book);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ====================================================================== */
|
/* ====================================================================== */
|
||||||
|
@ -33,17 +33,16 @@
|
|||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
|
|
||||||
/* Initialize the object registration subsystem */
|
/* Initialize the object registration subsystem */
|
||||||
/* XXX A better name would be 'ObjectClassInitialize ... */
|
void qof_object_initialize (void);
|
||||||
void gncObjectInitialize (void);
|
void qof_object_shutdown (void);
|
||||||
void gncObjectShutdown (void);
|
|
||||||
|
|
||||||
/* Note that the following are per-class and not per-instance */
|
/* Note that the following are per-class and not per-instance */
|
||||||
/* To be called from within the book */
|
/* To be called from within the book */
|
||||||
void gncObjectBookBegin (QofBook *book);
|
void qof_object_book_begin (QofBook *book);
|
||||||
void gncObjectBookEnd (QofBook *book);
|
void qof_object_book_end (QofBook *book);
|
||||||
|
|
||||||
gboolean gncObjectIsDirty (QofBook *book);
|
gboolean qof_object_is_dirty (QofBook *book);
|
||||||
void gncObjectMarkClean (QofBook *book);
|
void qof_object_mark_clean (QofBook *book);
|
||||||
|
|
||||||
#endif /* GNC_OBJECTP_H_ */
|
#endif /* GNC_OBJECTP_H_ */
|
||||||
/** @} */
|
/** @} */
|
@ -29,8 +29,8 @@
|
|||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include "gnc-engine-util.h"
|
#include "gnc-engine-util.h"
|
||||||
#include "gncObject.h"
|
#include "qofobject.h"
|
||||||
#include "gncObjectP.h"
|
#include "qofobject-p.h"
|
||||||
#include "qofbook.h"
|
#include "qofbook.h"
|
||||||
|
|
||||||
static gboolean object_is_initialized = FALSE;
|
static gboolean object_is_initialized = FALSE;
|
||||||
@ -38,13 +38,13 @@ static GList *object_modules = NULL;
|
|||||||
static GList *book_list = NULL;
|
static GList *book_list = NULL;
|
||||||
static GHashTable *backend_data = NULL;
|
static GHashTable *backend_data = NULL;
|
||||||
|
|
||||||
void gncObjectBookBegin (QofBook *book)
|
void qof_object_book_begin (QofBook *book)
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
if (!book) return;
|
if (!book) return;
|
||||||
for (l = object_modules; l; l = l->next) {
|
for (l = object_modules; l; l = l->next) {
|
||||||
GncObject_t *obj = l->data;
|
QofObject *obj = l->data;
|
||||||
if (obj->book_begin)
|
if (obj->book_begin)
|
||||||
obj->book_begin (book);
|
obj->book_begin (book);
|
||||||
}
|
}
|
||||||
@ -53,13 +53,13 @@ void gncObjectBookBegin (QofBook *book)
|
|||||||
book_list = g_list_prepend (book_list, book);
|
book_list = g_list_prepend (book_list, book);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncObjectBookEnd (QofBook *book)
|
void qof_object_book_end (QofBook *book)
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
if (!book) return;
|
if (!book) return;
|
||||||
for (l = object_modules; l; l = l->next) {
|
for (l = object_modules; l; l = l->next) {
|
||||||
GncObject_t *obj = l->data;
|
QofObject *obj = l->data;
|
||||||
if (obj->book_end)
|
if (obj->book_end)
|
||||||
obj->book_end (book);
|
obj->book_end (book);
|
||||||
}
|
}
|
||||||
@ -68,13 +68,13 @@ void gncObjectBookEnd (QofBook *book)
|
|||||||
book_list = g_list_remove (book_list, book);
|
book_list = g_list_remove (book_list, book);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean gncObjectIsDirty (QofBook *book)
|
gboolean qof_object_is_dirty (QofBook *book)
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
if (!book) return FALSE;
|
if (!book) return FALSE;
|
||||||
for (l = object_modules; l; l = l->next) {
|
for (l = object_modules; l; l = l->next) {
|
||||||
GncObject_t *obj = l->data;
|
QofObject *obj = l->data;
|
||||||
if (obj->is_dirty)
|
if (obj->is_dirty)
|
||||||
if (obj->is_dirty (book))
|
if (obj->is_dirty (book))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -82,13 +82,13 @@ gboolean gncObjectIsDirty (QofBook *book)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncObjectMarkClean (QofBook *book)
|
void qof_object_mark_clean (QofBook *book)
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
if (!book) return;
|
if (!book) return;
|
||||||
for (l = object_modules; l; l = l->next) {
|
for (l = object_modules; l; l = l->next) {
|
||||||
GncObject_t *obj = l->data;
|
QofObject *obj = l->data;
|
||||||
if (obj->mark_clean)
|
if (obj->mark_clean)
|
||||||
(obj->mark_clean) (book);
|
(obj->mark_clean) (book);
|
||||||
}
|
}
|
||||||
@ -101,7 +101,7 @@ void gncObjectForeachType (foreachTypeCB cb, gpointer user_data)
|
|||||||
if (!cb) return;
|
if (!cb) return;
|
||||||
|
|
||||||
for (l = object_modules; l; l = l->next) {
|
for (l = object_modules; l; l = l->next) {
|
||||||
GncObject_t *obj = l->data;
|
QofObject *obj = l->data;
|
||||||
(cb) (obj, user_data);
|
(cb) (obj, user_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,11 +109,11 @@ void gncObjectForeachType (foreachTypeCB cb, gpointer user_data)
|
|||||||
void gncObjectForeach (GNCIdTypeConst type_name, QofBook *book,
|
void gncObjectForeach (GNCIdTypeConst type_name, QofBook *book,
|
||||||
foreachObjectCB cb, gpointer user_data)
|
foreachObjectCB cb, gpointer user_data)
|
||||||
{
|
{
|
||||||
const GncObject_t *obj;
|
const QofObject *obj;
|
||||||
|
|
||||||
if (!book || !type_name) return;
|
if (!book || !type_name) return;
|
||||||
|
|
||||||
obj = gncObjectLookup (type_name);
|
obj = qof_object_lookup (type_name);
|
||||||
if (!obj) return;
|
if (!obj) return;
|
||||||
|
|
||||||
if (obj->foreach)
|
if (obj->foreach)
|
||||||
@ -125,11 +125,11 @@ void gncObjectForeach (GNCIdTypeConst type_name, QofBook *book,
|
|||||||
const char *
|
const char *
|
||||||
gncObjectPrintable (GNCIdTypeConst type_name, gpointer obj)
|
gncObjectPrintable (GNCIdTypeConst type_name, gpointer obj)
|
||||||
{
|
{
|
||||||
const GncObject_t *b_obj;
|
const QofObject *b_obj;
|
||||||
|
|
||||||
if (!type_name || !obj) return NULL;
|
if (!type_name || !obj) return NULL;
|
||||||
|
|
||||||
b_obj = gncObjectLookup (type_name);
|
b_obj = qof_object_lookup (type_name);
|
||||||
if (!b_obj) return NULL;
|
if (!b_obj) return NULL;
|
||||||
|
|
||||||
if (b_obj->printable)
|
if (b_obj->printable)
|
||||||
@ -138,13 +138,13 @@ gncObjectPrintable (GNCIdTypeConst type_name, gpointer obj)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * gncObjectGetTypeLabel (GNCIdTypeConst type_name)
|
const char * qof_object_get_type_label (GNCIdTypeConst type_name)
|
||||||
{
|
{
|
||||||
const GncObject_t *obj;
|
const QofObject *obj;
|
||||||
|
|
||||||
if (!type_name) return NULL;
|
if (!type_name) return NULL;
|
||||||
|
|
||||||
obj = gncObjectLookup (type_name);
|
obj = qof_object_lookup (type_name);
|
||||||
if (!obj) return NULL;
|
if (!obj) return NULL;
|
||||||
|
|
||||||
return (obj->type_label);
|
return (obj->type_label);
|
||||||
@ -158,14 +158,14 @@ static gboolean clear_table (gpointer key, gpointer value, gpointer user_data)
|
|||||||
|
|
||||||
/* INITIALIZATION and PRIVATE FUNCTIONS */
|
/* INITIALIZATION and PRIVATE FUNCTIONS */
|
||||||
|
|
||||||
void gncObjectInitialize (void)
|
void qof_object_initialize (void)
|
||||||
{
|
{
|
||||||
if (object_is_initialized) return;
|
if (object_is_initialized) return;
|
||||||
backend_data = g_hash_table_new (g_str_hash, g_str_equal);
|
backend_data = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
object_is_initialized = TRUE;
|
object_is_initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncObjectShutdown (void)
|
void qof_object_shutdown (void)
|
||||||
{
|
{
|
||||||
g_return_if_fail (object_is_initialized == TRUE);
|
g_return_if_fail (object_is_initialized == TRUE);
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ void gncObjectShutdown (void)
|
|||||||
* return FALSE if it fails, invalid arguments, or if the object
|
* return FALSE if it fails, invalid arguments, or if the object
|
||||||
* already exists
|
* already exists
|
||||||
*/
|
*/
|
||||||
gboolean gncObjectRegister (const GncObject_t *object)
|
gboolean qof_object_register (const QofObject *object)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (object_is_initialized, FALSE);
|
g_return_val_if_fail (object_is_initialized, FALSE);
|
||||||
|
|
||||||
@ -207,10 +207,10 @@ gboolean gncObjectRegister (const GncObject_t *object)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
const GncObject_t * gncObjectLookup (GNCIdTypeConst name)
|
const QofObject * qof_object_lookup (GNCIdTypeConst name)
|
||||||
{
|
{
|
||||||
GList *iter;
|
GList *iter;
|
||||||
const GncObject_t *obj;
|
const QofObject *obj;
|
||||||
|
|
||||||
g_return_val_if_fail (object_is_initialized, NULL);
|
g_return_val_if_fail (object_is_initialized, NULL);
|
||||||
|
|
||||||
@ -224,7 +224,7 @@ const GncObject_t * gncObjectLookup (GNCIdTypeConst name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean gncObjectRegisterBackend (GNCIdTypeConst type_name,
|
gboolean qof_object_registerBackend (GNCIdTypeConst type_name,
|
||||||
const char *backend_name,
|
const char *backend_name,
|
||||||
gpointer be_data)
|
gpointer be_data)
|
||||||
{
|
{
|
||||||
@ -250,7 +250,7 @@ gboolean gncObjectRegisterBackend (GNCIdTypeConst type_name,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gpointer gncObjectLookupBackend (GNCIdTypeConst type_name,
|
gpointer qof_object_lookupBackend (GNCIdTypeConst type_name,
|
||||||
const char *backend_name)
|
const char *backend_name)
|
||||||
{
|
{
|
||||||
GHashTable *ht;
|
GHashTable *ht;
|
||||||
@ -282,7 +282,7 @@ static void foreach_backend (gpointer key, gpointer be_item, gpointer arg)
|
|||||||
(cb_data->cb) (data_type, be_item, cb_data->user_data);
|
(cb_data->cb) (data_type, be_item, cb_data->user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncObjectForeachBackend (const char *backend_name,
|
void qof_object_foreach_backend (const char *backend_name,
|
||||||
foreachBackendTypeCB cb,
|
foreachBackendTypeCB cb,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
112
src/engine/qofobject.h
Normal file
112
src/engine/qofobject.h
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/********************************************************************\
|
||||||
|
* qofobject.h -- the Core 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 *
|
||||||
|
* 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 qofobject.h
|
||||||
|
* @breif the Core Object Registration/Lookup Interface
|
||||||
|
*
|
||||||
|
* @author Copyright (c) 2001,2002, Derek Atkins <warlord@MIT.EDU>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef QOF_OBJECT_H_
|
||||||
|
#define QOF_OBJECT_H_
|
||||||
|
|
||||||
|
#include "GNCId.h"
|
||||||
|
#include "qofbook.h"
|
||||||
|
|
||||||
|
/* Defines the version of the core object object registration
|
||||||
|
* interface. Only object modules compiled against this version
|
||||||
|
* of the interface will load properly
|
||||||
|
*/
|
||||||
|
#define GNC_OBJECT_VERSION 1
|
||||||
|
|
||||||
|
typedef struct _QofObject QofObject;
|
||||||
|
typedef void (*foreachTypeCB) (QofObject *type, gpointer user_data);
|
||||||
|
typedef void (*foreachBackendTypeCB) (GNCIdTypeConst type,
|
||||||
|
gpointer backend_data,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
|
/* This is the Object Object descriptor */
|
||||||
|
struct _QofObject {
|
||||||
|
gint interface_version; /* of this object interface */
|
||||||
|
GNCIdType name; /* the Object's GNC_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 *);
|
||||||
|
|
||||||
|
/* Determine if there are any dirty items in this book */
|
||||||
|
gboolean (*is_dirty)(QofBook *);
|
||||||
|
|
||||||
|
/* Mark this object's book clean (for after a load) */
|
||||||
|
void (*mark_clean)(QofBook *);
|
||||||
|
|
||||||
|
/* foreach() is used to execute a callback over each object
|
||||||
|
* stored in the particular book
|
||||||
|
*/
|
||||||
|
void (*foreach)(QofBook *, foreachObjectCB, gpointer);
|
||||||
|
|
||||||
|
/* Given a particular object, return a printable string */
|
||||||
|
const char * (*printable)(gpointer obj);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void gncObjectForeachType (foreachTypeCB cb, gpointer user_data);
|
||||||
|
|
||||||
|
void gncObjectForeach (GNCIdTypeConst type_name, QofBook *book,
|
||||||
|
foreachObjectCB cb, gpointer user_data);
|
||||||
|
|
||||||
|
const char * gncObjectPrintable (GNCIdTypeConst type_name, gpointer obj);
|
||||||
|
|
||||||
|
|
||||||
|
/* REGISTRATION AND REG-LOOKUP FUNCTIONS */
|
||||||
|
|
||||||
|
/** Register new types of object objects */
|
||||||
|
gboolean qof_object_register (const QofObject *object);
|
||||||
|
|
||||||
|
/** Get the printable label for a type. This label is *not*
|
||||||
|
* translated; you must use _() on it if you want a translated version.
|
||||||
|
*/
|
||||||
|
const char * qof_object_get_type_label (GNCIdTypeConst type_name);
|
||||||
|
|
||||||
|
/** Lookup a object definition */
|
||||||
|
const QofObject * qof_object_lookup (GNCIdTypeConst type_name);
|
||||||
|
|
||||||
|
|
||||||
|
/** Register and lookup backend-specific data for this particular object */
|
||||||
|
gboolean qof_object_registerBackend (GNCIdTypeConst type_name,
|
||||||
|
const char *backend_name,
|
||||||
|
gpointer be_data);
|
||||||
|
|
||||||
|
gpointer qof_object_lookupBackend (GNCIdTypeConst type_name,
|
||||||
|
const char *backend_name);
|
||||||
|
|
||||||
|
void qof_object_foreach_backend (const char *backend_name,
|
||||||
|
foreachBackendTypeCB cb,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
|
#endif /* QOF_OBJECT_H_ */
|
||||||
|
/** @} */
|
Loading…
Reference in New Issue
Block a user