mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Rewrite gnc_commodity_table_get_quotable_commodities as gnc_quotes_get_quotable_commodities
It only makes sense in that context.
This commit is contained in:
parent
466db526b2
commit
1d94887a0b
@ -31,6 +31,8 @@
|
|||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "gnc-path.h"
|
#include "gnc-path.h"
|
||||||
|
#include <gnc-prefs.h>
|
||||||
|
#include <regex.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace bp = boost::process;
|
namespace bp = boost::process;
|
||||||
@ -38,6 +40,9 @@ namespace bp = boost::process;
|
|||||||
static GncQuotes quotes_cached;
|
static GncQuotes quotes_cached;
|
||||||
static bool quotes_initialized = false;
|
static bool quotes_initialized = false;
|
||||||
|
|
||||||
|
CommVec
|
||||||
|
gnc_quotes_get_quotable_commodities(const gnc_commodity_table * table);
|
||||||
|
|
||||||
GncQuotes::GncQuotes()
|
GncQuotes::GncQuotes()
|
||||||
{
|
{
|
||||||
check();
|
check();
|
||||||
@ -94,6 +99,88 @@ GncQuotes::sources_as_glist()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
* gnc_quotes_get_quotable_commodities
|
||||||
|
* list commodities in a given namespace that get price quotes
|
||||||
|
********************************************************************/
|
||||||
|
static void
|
||||||
|
get_quotables_helper1 (gpointer value, gpointer data)
|
||||||
|
{
|
||||||
|
auto l = static_cast<CommVec *> (data);
|
||||||
|
auto comm = static_cast<gnc_commodity *> (value);
|
||||||
|
auto quote_flag = gnc_commodity_get_quote_flag (comm);
|
||||||
|
auto quote_source = gnc_commodity_get_quote_source (comm);
|
||||||
|
auto quote_source_supported = gnc_quote_source_get_supported (quote_source);
|
||||||
|
|
||||||
|
if (!quote_flag ||
|
||||||
|
!quote_source || !quote_source_supported)
|
||||||
|
return;
|
||||||
|
l->push_back (comm);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
get_quotables_helper2 (gnc_commodity *comm, gpointer data)
|
||||||
|
{
|
||||||
|
auto l = static_cast<CommVec *> (data);
|
||||||
|
auto quote_flag = gnc_commodity_get_quote_flag (comm);
|
||||||
|
auto quote_source = gnc_commodity_get_quote_source (comm);
|
||||||
|
auto quote_source_supported = gnc_quote_source_get_supported (quote_source);
|
||||||
|
|
||||||
|
if (!quote_flag ||
|
||||||
|
!quote_source || !quote_source_supported)
|
||||||
|
return TRUE;
|
||||||
|
l->push_back (comm);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CommVec
|
||||||
|
gnc_quotes_get_quotable_commodities (const gnc_commodity_table * table)
|
||||||
|
{
|
||||||
|
gnc_commodity_namespace * ns = NULL;
|
||||||
|
const char *name_space;
|
||||||
|
GList * nslist, * tmp;
|
||||||
|
CommVec l;
|
||||||
|
regex_t pattern;
|
||||||
|
const char *expression = gnc_prefs_get_namespace_regexp ();
|
||||||
|
|
||||||
|
// ENTER("table=%p, expression=%s", table, expression);
|
||||||
|
if (!table)
|
||||||
|
return CommVec ();
|
||||||
|
|
||||||
|
if (expression && *expression)
|
||||||
|
{
|
||||||
|
if (regcomp (&pattern, expression, REG_EXTENDED | REG_ICASE) != 0)
|
||||||
|
{
|
||||||
|
// LEAVE ("Cannot compile regex");
|
||||||
|
return CommVec ();
|
||||||
|
}
|
||||||
|
|
||||||
|
nslist = gnc_commodity_table_get_namespaces (table);
|
||||||
|
for (tmp = nslist; tmp; tmp = tmp->next)
|
||||||
|
{
|
||||||
|
name_space = static_cast<const char *> (tmp->data);
|
||||||
|
if (regexec (&pattern, name_space, 0, NULL, 0) == 0)
|
||||||
|
{
|
||||||
|
// DEBUG ("Running list of %s commodities", name_space);
|
||||||
|
ns = gnc_commodity_table_find_namespace (table, name_space);
|
||||||
|
if (ns)
|
||||||
|
{
|
||||||
|
auto cm_list = gnc_commodity_namespace_get_commodity_list (ns);
|
||||||
|
g_list_foreach (cm_list, &get_quotables_helper1, (gpointer) &l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_list_free (nslist);
|
||||||
|
regfree (&pattern);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gnc_commodity_table_foreach_commodity (table, get_quotables_helper2,
|
||||||
|
(gpointer) &l);
|
||||||
|
}
|
||||||
|
//LEAVE ("list head %p", &l);
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
const GncQuotes& gnc_get_quotes_instance()
|
const GncQuotes& gnc_get_quotes_instance()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user