From 62c76bce36dd46f9f7e084ef92c4f685372c3686 Mon Sep 17 00:00:00 2001 From: Derek Atkins Date: Sat, 6 Jul 2002 21:50:14 +0000 Subject: [PATCH] * kvp-scm: create gnc_kvp_frame_delete_at_path() and wrap it. This function will clear a sub-tree out of a kvp_frame. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7090 57a11ea4-9604-0410-9ed3-97b8803252fd --- ChangeLog | 3 +++ src/engine/gw-kvp-spec.scm | 9 +++++++++ src/engine/kvp-scm.c | 13 +++++++++++++ src/engine/kvp-scm.h | 1 + 4 files changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index c25bd01e44..77699e83ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ * gw-kvp-spec.scm: wrap kvp_slot_set_slot_path_gslist(), kvp_slot_get_slot_path_gslist(), and gnc_book_get_slots() + * kvp-scm: create gnc_kvp_frame_delete_at_path() and wrap it. + This function will clear a sub-tree out of a kvp_frame. + 2002-07-05 Derek Atkins * gw-engine-spec.scm: wrap gnc_lot_get_split_list diff --git a/src/engine/gw-kvp-spec.scm b/src/engine/gw-kvp-spec.scm index bfc931f94e..a6140091e7 100644 --- a/src/engine/gw-kvp-spec.scm +++ b/src/engine/gw-kvp-spec.scm @@ -40,6 +40,15 @@ '(c-var " = gnc_scm_to_kvp_value_ptr(" scm-var ");\n") '(scm-var " = gnc_kvp_value_ptr_to_scm(" c-var ");\n")) + (gw:wrap-function + ws + 'gnc:kvp-frame-delete-at-path + ' + "gnc_kvp_frame_delete_at_path" + '(( f) + ((gw:glist-of ( caller-owned const) caller-owned) key-path)) + "Deletes the kvp_frame at the key-path in frame f") + (gw:wrap-function ws 'gnc:kvp-frame-set-slot diff --git a/src/engine/kvp-scm.c b/src/engine/kvp-scm.c index a4ccac0873..91f334f6ab 100644 --- a/src/engine/kvp-scm.c +++ b/src/engine/kvp-scm.c @@ -95,3 +95,16 @@ gnc_kvp_value_ptr_to_scm(kvp_value* val) } return SCM_BOOL_F; } + +void +gnc_kvp_frame_delete_at_path (kvp_frame *frame, GSList *key_path) +{ + kvp_value *val; + + val = kvp_frame_get_slot_path_gslist (frame, key_path); + if (!val) return; + if (kvp_value_get_type (val) == KVP_TYPE_FRAME) { + frame = kvp_value_get_frame (val); + kvp_frame_delete (frame); + } +} diff --git a/src/engine/kvp-scm.h b/src/engine/kvp-scm.h index 269135ad64..2aa8b21058 100644 --- a/src/engine/kvp-scm.h +++ b/src/engine/kvp-scm.h @@ -7,6 +7,7 @@ int gnc_kvp_value_ptr_p(SCM arg); kvp_value* gnc_scm_to_kvp_value_ptr(SCM kvpval); SCM gnc_kvp_value_ptr_to_scm(kvp_value* val); +void gnc_kvp_frame_delete_at_path(kvp_frame *frame, GSList *key_path); #endif /* KVP_SCM_H */