From e28f314d436846881aa1421656ce66dada68fed3 Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Mon, 23 Jun 2025 22:17:38 +0800 Subject: [PATCH] [Split.cpp] use qof_instance kvp API for gnc_numeric --- libgnucash/engine/Split.cpp | 47 ++++++++++--------------------------- 1 file changed, 13 insertions(+), 34 deletions(-) diff --git a/libgnucash/engine/Split.cpp b/libgnucash/engine/Split.cpp index 9acf0e9240..d2b6892bc9 100644 --- a/libgnucash/engine/Split.cpp +++ b/libgnucash/engine/Split.cpp @@ -2115,64 +2115,43 @@ xaccSplitGetOtherSplit (const Split *split) gnc_numeric xaccSplitVoidFormerAmount(const Split *split) { - GValue v = G_VALUE_INIT; - gnc_numeric *num = nullptr; - gnc_numeric retval; g_return_val_if_fail(split, gnc_numeric_zero()); - qof_instance_get_kvp (QOF_INSTANCE (split), &v, 1, void_former_amt_str); - if (G_VALUE_HOLDS_BOXED (&v)) - num = (gnc_numeric*)g_value_get_boxed (&v); - retval = num ? *num : gnc_numeric_zero(); - g_value_unset (&v); - return retval; + auto num{qof_instance_get_path_kvp (QOF_INSTANCE(split), {void_former_amt_str})}; + return num ? *num : gnc_numeric_zero(); } gnc_numeric xaccSplitVoidFormerValue(const Split *split) { - GValue v = G_VALUE_INIT; - gnc_numeric *num = nullptr; - gnc_numeric retval; g_return_val_if_fail(split, gnc_numeric_zero()); - qof_instance_get_kvp (QOF_INSTANCE (split), &v, 1, void_former_val_str); - if (G_VALUE_HOLDS_BOXED (&v)) - num = (gnc_numeric*)g_value_get_boxed (&v); - retval = num ? *num : gnc_numeric_zero(); - g_value_unset (&v); - return retval; + auto num{qof_instance_get_path_kvp (QOF_INSTANCE(split), {void_former_val_str})}; + return num ? *num : gnc_numeric_zero(); } void xaccSplitVoid(Split *split) { - gnc_numeric zero = gnc_numeric_zero(), num; - GValue v = G_VALUE_INIT; + g_return_if_fail (GNC_IS_SPLIT(split)); + qof_instance_set_path_kvp (QOF_INSTANCE(split), xaccSplitGetAmount(split), {void_former_amt_str}); + qof_instance_set_path_kvp (QOF_INSTANCE(split), xaccSplitGetValue(split), {void_former_val_str}); + qof_instance_set_dirty (QOF_INSTANCE(split)); - g_value_init (&v, GNC_TYPE_NUMERIC); - num = xaccSplitGetAmount(split); - g_value_set_boxed (&v, &num); - qof_instance_set_kvp (QOF_INSTANCE (split), &v, 1, void_former_amt_str); - g_value_reset (&v); - num = xaccSplitGetValue(split); - g_value_set_boxed (&v, &num); - qof_instance_set_kvp (QOF_INSTANCE (split), &v, 1, void_former_val_str); - - /* Marking dirty handled by SetAmount etc. */ + static gnc_numeric zero = gnc_numeric_zero(); xaccSplitSetAmount (split, zero); xaccSplitSetValue (split, zero); xaccSplitSetReconcile(split, VREC); - g_value_unset (&v); } void xaccSplitUnvoid(Split *split) { + g_return_if_fail (GNC_IS_SPLIT(split)); xaccSplitSetAmount (split, xaccSplitVoidFormerAmount(split)); xaccSplitSetValue (split, xaccSplitVoidFormerValue(split)); xaccSplitSetReconcile(split, NREC); - qof_instance_set_kvp (QOF_INSTANCE (split), nullptr, 1, void_former_amt_str); - qof_instance_set_kvp (QOF_INSTANCE (split), nullptr, 1, void_former_val_str); - qof_instance_set_dirty (QOF_INSTANCE (split)); + qof_instance_set_path_kvp (QOF_INSTANCE(split), {}, {void_former_amt_str}); + qof_instance_set_path_kvp (QOF_INSTANCE(split), {}, {void_former_val_str}); + qof_instance_set_dirty (QOF_INSTANCE(split)); } /********************************************************************\