gnucash stable: [gnc-pricedb.cpp] use std::pair instead of a struct for PriceTuple
Christopher Lam
clam at code.gnucash.org
Fri Aug 4 08:38:13 EDT 2023
Updated via https://github.com/Gnucash/gnucash/commit/2d730e38 (commit)
from https://github.com/Gnucash/gnucash/commit/6b741ddf (commit)
commit 2d730e38d5aa4c1f54c658636c9b0f671dcc21e4
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Tue Aug 1 23:29:59 2023 +0800
[gnc-pricedb.cpp] use std::pair instead of a struct for PriceTuple
diff --git a/libgnucash/engine/gnc-pricedb.cpp b/libgnucash/engine/gnc-pricedb.cpp
index f67437140a..03de4bd66b 100644
--- a/libgnucash/engine/gnc-pricedb.cpp
+++ b/libgnucash/engine/gnc-pricedb.cpp
@@ -2371,17 +2371,12 @@ gnc_pricedb_lookup_nearest_before_t64 (GNCPriceDB *db,
}
-typedef struct
-{
- GNCPrice *from;
- GNCPrice *to;
-} PriceTuple;
+using PriceTuple = std::pair<GNCPrice*, GNCPrice*>;
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;
@@ -2411,31 +2406,27 @@ extract_common_prices (PriceList *from_prices, PriceList *to_prices,
break;
}
if (from_price == NULL || to_price == NULL)
- return retval;
+ return {nullptr, nullptr};
gnc_price_ref(from_price);
gnc_price_ref(to_price);
- retval.from = from_price;
- retval.to = to_price;
- return retval;
+ return {from_price, to_price};
}
static gnc_numeric
convert_price (const gnc_commodity *from, const gnc_commodity *to, PriceTuple tuple)
{
- 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;
+ 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);
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);
- price = gnc_numeric_div (to_val, from_val, GNC_DENOM_AUTO, no_round);
-
- gnc_price_unref (tuple.from);
- gnc_price_unref (tuple.to);
+ gnc_price_unref (tuple.first);
+ gnc_price_unref (tuple.second);
if (from_cur == from && to_cur == to)
return price;
@@ -2489,7 +2480,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.from)
+ if (tuple.first)
return convert_price (from, to, tuple);
return zero;
}
Summary of changes:
libgnucash/engine/gnc-pricedb.cpp | 35 +++++++++++++----------------------
1 file changed, 13 insertions(+), 22 deletions(-)
More information about the gnucash-changes
mailing list