* src/engine/gw-engine-spec.scm: g-wrap event types enum

* src/engine/gnc-session.c: set book backend to NULL before
destroying old book in gnc_session_load

* src/engine/Transaction.c: do checks & events when setting
slots for transactions and splits.

* src/engine/GNCId.h: add a const typedef for GNCIdType


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6393 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Dave Peticolas 2001-12-19 11:40:37 +00:00
parent e9bc21cf28
commit bf0bc57a5a
4 changed files with 56 additions and 35 deletions

View File

@ -47,6 +47,7 @@
* identifier. */
typedef char * GNCIdType;
typedef const char * GNCIdTypeConst;
#define GNC_ID_NONE NULL
#define GNC_ID_NULL "null"

View File

@ -367,30 +367,6 @@ xaccSplitEqual(const Split *sa, const Split *sb,
return(TRUE);
}
/********************************************************************
* xaccSplitGetSlots
********************************************************************/
kvp_frame *
xaccSplitGetSlots(Split * s) {
if(!s) return NULL;
return(s->kvp_data);
}
void
xaccSplitSetSlots_nc(Split *s, kvp_frame *frm)
{
g_return_if_fail(s);
g_return_if_fail(frm);
if(s->kvp_data)
{
kvp_frame_delete(s->kvp_data);
}
s->kvp_data = frm;
}
/********************************************************************
* Account funcs
********************************************************************/
@ -437,7 +413,8 @@ xaccSplitSetGUID (Split *split, const GUID *guid)
check_open (split->parent);
xaccRemoveEntity(split->book->entity_table, &split->guid);
split->guid = *guid;
xaccStoreEntity(split->book->entity_table, split, &split->guid, GNC_ID_SPLIT);
xaccStoreEntity(split->book->entity_table, split,
&split->guid, GNC_ID_SPLIT);
}
/********************************************************************\
@ -569,6 +546,34 @@ get_commodity_denom(Split * s)
}
}
/********************************************************************
* xaccSplitGetSlots
********************************************************************/
kvp_frame *
xaccSplitGetSlots (Split * s)
{
if(!s) return NULL;
return(s->kvp_data);
}
void
xaccSplitSetSlots_nc(Split *s, kvp_frame *frm)
{
g_return_if_fail(s);
g_return_if_fail(frm);
check_open (s->parent);
if (s->kvp_data && (s->kvp_data != frm))
{
kvp_frame_delete(s->kvp_data);
}
s->kvp_data = frm;
gen_event (s);
}
/********************************************************************\
\********************************************************************/
@ -1040,23 +1045,27 @@ xaccTransEqual(const Transaction *ta, const Transaction *tb,
********************************************************************/
kvp_frame *
xaccTransGetSlots(Transaction *t) {
xaccTransGetSlots (Transaction *t)
{
if(!t) return NULL;
return(t->kvp_data);
}
void
xaccTransSetSlots_nc(Transaction *t, kvp_frame *frm)
xaccTransSetSlots_nc (Transaction *t, kvp_frame *frm)
{
g_return_if_fail(t);
g_return_if_fail(frm);
g_return_if_fail(t);
g_return_if_fail(frm);
check_open (t);
if(t->kvp_data)
{
kvp_frame_delete(t->kvp_data);
}
if (t->kvp_data && (t->kvp_data != frm))
{
kvp_frame_delete(t->kvp_data);
}
t->kvp_data = frm;
t->kvp_data = frm;
gen_event_trans (t);
}
/********************************************************************\

View File

@ -361,6 +361,7 @@ gnc_session_load (GNCSession *session)
xaccLogDisable();
gnc_book_set_backend (session->book, NULL);
gnc_book_destroy (session->book);
session->book = gnc_book_new ();

View File

@ -375,6 +375,7 @@
"#include <gnc-book.h>\n"
"#include <gnc-session.h>\n"
"#include <gnc-engine-util.h>\n"
"#include <gnc-event.h>\n"
"#include <date.h>\n"
"#include <engine-helpers.h>\n"
"#include <gnc-engine.h>\n"
@ -387,7 +388,16 @@
(if client-only?
'()
(gw:inline-scheme '(use-modules (gnucash engine))))))
(let ((wt (gw:wrap-enumeration mod '<gnc:event-type>
"GNCEngineEventType"
"const GNCEngineEventType")))
(gw:enum-add-value! wt "GNC_EVENT_NONE" 'gnc-event-none)
(gw:enum-add-value! wt "GNC_EVENT_CREATE" 'gnc-event-create)
(gw:enum-add-value! wt "GNC_EVENT_MODIFY" 'gnc-event-modify)
(gw:enum-add-value! wt "GNC_EVENT_DESTROY" 'gnc-event-destroy)
(gw:enum-add-value! wt "GNC_EVENT_ALL" 'gnc-event-all))
(gw:wrap-non-native-type mod '<gnc:Account*> "Account*" "const Account*")
(gw:wrap-non-native-type mod '<gnc:Account**> "Account**" "const Account**")