mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
start making changes to eliminate topgroup from this struct
(this version produces run-time warnings, I'm fixing them). git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@8515 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
e43973c77a
commit
a91c6ef9ff
@ -29,7 +29,7 @@
|
|||||||
*
|
*
|
||||||
* HISTORY:
|
* HISTORY:
|
||||||
* Created by Linas Vepstas December 1998
|
* Created by Linas Vepstas December 1998
|
||||||
* Copyright (c) 1998-2001 Linas Vepstas
|
* Copyright (c) 1998-2001,2003 Linas Vepstas <linas@linas.org>
|
||||||
* Copyright (c) 2000 Dave Peticolas
|
* Copyright (c) 2000 Dave Peticolas
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -64,6 +64,46 @@
|
|||||||
|
|
||||||
static short module = MOD_IO;
|
static short module = MOD_IO;
|
||||||
|
|
||||||
|
/* ====================================================================== */
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnc_book_populate (GNCBook *book)
|
||||||
|
{
|
||||||
|
gnc_book_set_group (book, xaccMallocAccountGroup(book));
|
||||||
|
book->pricedb = gnc_pricedb_create(book);
|
||||||
|
|
||||||
|
book->sched_xactions = NULL;
|
||||||
|
book->sx_notsaved = FALSE;
|
||||||
|
book->template_group = xaccMallocAccountGroup(book);
|
||||||
|
book->commodity_table = gnc_commodity_table_new ();
|
||||||
|
|
||||||
|
if(book->commodity_table)
|
||||||
|
{
|
||||||
|
if(!gnc_commodity_table_add_default_data(book->commodity_table))
|
||||||
|
PWARN("unable to initialize book's commodity_table");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnc_book_depopulate (GNCBook *book)
|
||||||
|
{
|
||||||
|
AccountGroup *grp;
|
||||||
|
|
||||||
|
grp = gnc_book_get_group (book);
|
||||||
|
xaccAccountGroupBeginEdit (grp);
|
||||||
|
xaccAccountGroupDestroy (grp);
|
||||||
|
|
||||||
|
gnc_pricedb_destroy (book->pricedb);
|
||||||
|
book->pricedb = NULL;
|
||||||
|
|
||||||
|
gnc_commodity_table_destroy (book->commodity_table);
|
||||||
|
book->commodity_table = NULL;
|
||||||
|
|
||||||
|
/* FIXME: destroy SX data members here, too */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* ====================================================================== */
|
/* ====================================================================== */
|
||||||
/* constructor / destructor */
|
/* constructor / destructor */
|
||||||
|
|
||||||
@ -78,19 +118,9 @@ gnc_book_init (GNCBook *book)
|
|||||||
xaccStoreEntity(book->entity_table, book, &book->guid, GNC_ID_BOOK);
|
xaccStoreEntity(book->entity_table, book, &book->guid, GNC_ID_BOOK);
|
||||||
|
|
||||||
book->kvp_data = kvp_frame_new ();
|
book->kvp_data = kvp_frame_new ();
|
||||||
book->topgroup = xaccMallocAccountGroup(book);
|
|
||||||
book->pricedb = gnc_pricedb_create(book);
|
/* XXX this needs to go away */
|
||||||
|
gnc_book_populate (book);
|
||||||
book->sched_xactions = NULL;
|
|
||||||
book->sx_notsaved = FALSE;
|
|
||||||
book->template_group = xaccMallocAccountGroup(book);
|
|
||||||
book->commodity_table = gnc_commodity_table_new ();
|
|
||||||
|
|
||||||
if(book->commodity_table)
|
|
||||||
{
|
|
||||||
if(!gnc_commodity_table_add_default_data(book->commodity_table))
|
|
||||||
PWARN("unable to initialize book's commodity_table");
|
|
||||||
}
|
|
||||||
|
|
||||||
book->data_tables = g_hash_table_new (g_str_hash, g_str_equal);
|
book->data_tables = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
|
|
||||||
@ -126,17 +156,8 @@ gnc_book_destroy (GNCBook *book)
|
|||||||
|
|
||||||
gncObjectBookEnd (book);
|
gncObjectBookEnd (book);
|
||||||
|
|
||||||
xaccAccountGroupBeginEdit (book->topgroup);
|
/* XXX this needs to go away */
|
||||||
xaccAccountGroupDestroy (book->topgroup);
|
gnc_book_depopulate (book);
|
||||||
book->topgroup = NULL;
|
|
||||||
|
|
||||||
gnc_pricedb_destroy (book->pricedb);
|
|
||||||
book->pricedb = NULL;
|
|
||||||
|
|
||||||
gnc_commodity_table_destroy (book->commodity_table);
|
|
||||||
book->commodity_table = NULL;
|
|
||||||
|
|
||||||
/* FIXME: destroy SX data members here, too */
|
|
||||||
|
|
||||||
xaccRemoveEntity (book->entity_table, &book->guid);
|
xaccRemoveEntity (book->entity_table, &book->guid);
|
||||||
xaccEntityTableDestroy (book->entity_table);
|
xaccEntityTableDestroy (book->entity_table);
|
||||||
@ -175,17 +196,26 @@ gnc_book_get_entity_table (GNCBook *book)
|
|||||||
return book->entity_table;
|
return book->entity_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */
|
||||||
|
|
||||||
|
#define GNC_COMMODITY_TABLE "gnc_commodity_table"
|
||||||
gnc_commodity_table *
|
gnc_commodity_table *
|
||||||
gnc_book_get_commodity_table(GNCBook *book)
|
gnc_book_get_commodity_table(GNCBook *book)
|
||||||
{
|
{
|
||||||
if (!book) return NULL;
|
if (!book) return NULL;
|
||||||
|
printf ("duude get commoity table\n");
|
||||||
return book->commodity_table;
|
return book->commodity_table;
|
||||||
|
return gnc_book_get_data (book, GNC_COMMODITY_TABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define GNC_TOP_GROUP "gnc_top_group"
|
||||||
AccountGroup *
|
AccountGroup *
|
||||||
gnc_book_get_group (GNCBook *book)
|
gnc_book_get_group (GNCBook *book)
|
||||||
{
|
{
|
||||||
if (!book) return NULL;
|
if (!book) return NULL;
|
||||||
|
printf ("duude get topgrp\n");
|
||||||
|
if (book->topgroup != gnc_book_get_data (book, GNC_TOP_GROUP))
|
||||||
|
printf ("duuuude major xxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
|
||||||
return book->topgroup;
|
return book->topgroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,14 +223,15 @@ GNCPriceDB *
|
|||||||
gnc_book_get_pricedb(GNCBook *book)
|
gnc_book_get_pricedb(GNCBook *book)
|
||||||
{
|
{
|
||||||
if (!book) return NULL;
|
if (!book) return NULL;
|
||||||
|
printf ("duude get pricedb\n");
|
||||||
return book->pricedb;
|
return book->pricedb;
|
||||||
}
|
}
|
||||||
|
|
||||||
GList *
|
GList *
|
||||||
gnc_book_get_schedxactions( GNCBook *book )
|
gnc_book_get_schedxactions( GNCBook *book )
|
||||||
{
|
{
|
||||||
if ( book == NULL ) return NULL;
|
if ( book == NULL ) return NULL;
|
||||||
return book->sched_xactions;
|
return book->sched_xactions;
|
||||||
}
|
}
|
||||||
|
|
||||||
AccountGroup *
|
AccountGroup *
|
||||||
@ -237,14 +268,15 @@ gnc_book_set_group (GNCBook *book, AccountGroup *grp)
|
|||||||
{
|
{
|
||||||
if (!book) return;
|
if (!book) return;
|
||||||
|
|
||||||
/* Do not free the old topgroup here unless you also fix
|
/* XXX Do not free the old topgroup here unless you also fix
|
||||||
* all the other uses of gnc_book_set_group!
|
* all the other uses of gnc_book_set_group! That's because
|
||||||
|
* the account group is not reference-counted, and there's some
|
||||||
|
* chance that we'll leave a dangling pointer somewhere.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (book->topgroup == grp)
|
if (gnc_book_get_group (book) == grp) return;
|
||||||
return;
|
|
||||||
|
|
||||||
if (grp->book != book)
|
if (grp && grp->book != book)
|
||||||
{
|
{
|
||||||
PERR ("cannot mix and match books freely!");
|
PERR ("cannot mix and match books freely!");
|
||||||
return;
|
return;
|
||||||
@ -260,6 +292,7 @@ gnc_book_set_group (GNCBook *book, AccountGroup *grp)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
book->topgroup = grp;
|
book->topgroup = grp;
|
||||||
|
gnc_book_set_data (book, GNC_TOP_GROUP, grp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -432,13 +465,18 @@ gnc_book_equal (GNCBook *book_1, GNCBook *book_2)
|
|||||||
/* ====================================================================== */
|
/* ====================================================================== */
|
||||||
|
|
||||||
/* Store arbitrary pointers in the GNCBook for data storage extensibility */
|
/* Store arbitrary pointers in the GNCBook for data storage extensibility */
|
||||||
void gnc_book_set_data (GNCBook *book, const char *key, gpointer data)
|
/* XXX if data is NULL, should we store a null pointer, or should
|
||||||
|
* we remove the key from the hash table?
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gnc_book_set_data (GNCBook *book, const char *key, gpointer data)
|
||||||
{
|
{
|
||||||
if (!book || !key || !data) return;
|
if (!book || !key) return;
|
||||||
g_hash_table_insert (book->data_tables, (gpointer)key, data);
|
g_hash_table_insert (book->data_tables, (gpointer)key, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
gpointer gnc_book_get_data (GNCBook *book, const char *key)
|
gpointer
|
||||||
|
gnc_book_get_data (GNCBook *book, const char *key)
|
||||||
{
|
{
|
||||||
if (!book || !key) return NULL;
|
if (!book || !key) return NULL;
|
||||||
return g_hash_table_lookup (book->data_tables, (gpointer)key);
|
return g_hash_table_lookup (book->data_tables, (gpointer)key);
|
||||||
|
Loading…
Reference in New Issue
Block a user