gnucash stable: Revert "[gnc-pricedb.cpp] use std::pair instead of a struct for PriceTuple"

Christopher Lam clam at code.gnucash.org
Fri Aug 4 23:03:16 EDT 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/d8954456 (commit)
	from  https://github.com/Gnucash/gnucash/commit/d2e0ccfe (commit)



commit d89544563dddec65173727f689a6a53bcc5a6556
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Aug 5 11:02:57 2023 +0800

    Revert "[gnc-pricedb.cpp] use std::pair instead of a struct for PriceTuple"
    
    This reverts commit 2d730e38d5aa4c1f54c658636c9b0f671dcc21e4.

diff --git a/libgnucash/engine/gnc-pricedb.cpp b/libgnucash/engine/gnc-pricedb.cpp
index 03de4bd66b..f67437140a 100644
--- a/libgnucash/engine/gnc-pricedb.cpp
+++ b/libgnucash/engine/gnc-pricedb.cpp
@@ -2371,12 +2371,17 @@ gnc_pricedb_lookup_nearest_before_t64 (GNCPriceDB *db,
 }
 
 
-using PriceTuple = std::pair<GNCPrice*, GNCPrice*>;
+typedef struct
+{
+    GNCPrice *from;
+    GNCPrice *to;
+} PriceTuple;
 
 static PriceTuple
 extract_common_prices (PriceList *from_prices, PriceList *to_prices,
                        const gnc_commodity *from, const gnc_commodity *to)
 {
+    PriceTuple retval = {NULL, NULL};
     GList *from_node = NULL, *to_node = NULL;
     GNCPrice *from_price = NULL, *to_price = NULL;
 
@@ -2406,27 +2411,31 @@ extract_common_prices (PriceList *from_prices, PriceList *to_prices,
             break;
     }
     if (from_price == NULL || to_price == NULL)
-        return {nullptr, nullptr};
+        return retval;
     gnc_price_ref(from_price);
     gnc_price_ref(to_price);
-    return {from_price, to_price};
+    retval.from = from_price;
+    retval.to = to_price;
+    return retval;
 }
 
 
 static gnc_numeric
 convert_price (const gnc_commodity *from, const gnc_commodity *to, PriceTuple tuple)
 {
-    gnc_commodity *from_com = gnc_price_get_commodity (tuple.first);
-    gnc_commodity *from_cur = gnc_price_get_currency (tuple.first);
-    gnc_commodity *to_com = gnc_price_get_commodity (tuple.second);
-    gnc_commodity *to_cur = gnc_price_get_currency (tuple.second);
-    gnc_numeric from_val = gnc_price_get_value (tuple.first);
-    gnc_numeric to_val = gnc_price_get_value (tuple.second);
+    gnc_commodity *from_com = gnc_price_get_commodity (tuple.from);
+    gnc_commodity *from_cur = gnc_price_get_currency (tuple.from);
+    gnc_commodity *to_com = gnc_price_get_commodity (tuple.to);
+    gnc_commodity *to_cur = gnc_price_get_currency (tuple.to);
+    gnc_numeric from_val = gnc_price_get_value (tuple.from);
+    gnc_numeric to_val = gnc_price_get_value (tuple.to);
+    gnc_numeric price;
     int no_round = GNC_HOW_DENOM_EXACT | GNC_HOW_RND_NEVER;
-    gnc_numeric price = gnc_numeric_div (to_val, from_val, GNC_DENOM_AUTO, no_round);
 
-    gnc_price_unref (tuple.first);
-    gnc_price_unref (tuple.second);
+    price = gnc_numeric_div (to_val, from_val, GNC_DENOM_AUTO, no_round);
+
+    gnc_price_unref (tuple.from);
+    gnc_price_unref (tuple.to);
 
     if (from_cur == from && to_cur == to)
         return price;
@@ -2480,7 +2489,7 @@ indirect_price_conversion (GNCPriceDB *db, const gnc_commodity *from,
     tuple = extract_common_prices (from_prices, to_prices, from, to);
     gnc_price_list_destroy (from_prices);
     gnc_price_list_destroy (to_prices);
-    if (tuple.first)
+    if (tuple.from)
         return convert_price (from, to, tuple);
     return zero;
 }



Summary of changes:
 libgnucash/engine/gnc-pricedb.cpp | 35 ++++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 13 deletions(-)



More information about the gnucash-changes mailing list