Remove redundant routines and place a single copy in a common location.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7687 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
David Hampton 2002-12-15 23:25:01 +00:00
parent c43bef4a62
commit 1d98fa5497
5 changed files with 54 additions and 75 deletions

View File

@ -354,26 +354,6 @@ void gnc_entry_ledger_set_default_order (GncEntryLedger *ledger,
gnc_entry_ledger_display_refresh (ledger);
}
static GSList *
build_param_list (char const *param, ...)
{
GSList *param_list = NULL;
char const *this_param;
va_list ap;
if (!param)
return NULL;
va_start (ap, param);
for (this_param = param; this_param; this_param = va_arg (ap, const char *))
param_list = g_slist_prepend (param_list, (gpointer)this_param);
va_end (ap);
return g_slist_reverse (param_list);
}
static void create_invoice_query (GncEntryLedger *ledger)
{
QueryNew *q, *q1;
@ -425,7 +405,7 @@ static void create_invoice_query (GncEntryLedger *ledger)
}
q = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME);
gncQueryAddGUIDMatch (q, build_param_list (type, QUERY_PARAM_GUID, NULL),
gncQueryAddGUIDMatch (q, gncQueryBuildParamList (type, QUERY_PARAM_GUID, NULL),
gncInvoiceGetGUID (ledger->invoice), QUERY_OR);
/* Term 3 */
@ -441,31 +421,31 @@ static void create_invoice_query (GncEntryLedger *ledger)
* ( Entry->BillTo == NULL AND Entry->Bill->BillTo == Invoice->parent )
*/
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_BILLTO,
QUERY_PARAM_GUID, NULL),
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO,
QUERY_PARAM_GUID, NULL),
NULL, QUERY_AND);
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_BILL, INVOICE_BILLTO,
QUERY_PARAM_GUID, NULL),
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILL, INVOICE_BILLTO,
QUERY_PARAM_GUID, NULL),
invoice_parent, QUERY_AND);
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_BILLTO,
QUERY_PARAM_GUID, NULL),
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO,
QUERY_PARAM_GUID, NULL),
invoice_parent, QUERY_OR);
/* Entry->Billable == TRUE AND Entry->Bill->Is-Posted? == TRUE */
gncQueryAddBooleanMatch (q2, build_param_list (ENTRY_BILLABLE, NULL),
gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILLABLE, NULL),
TRUE, QUERY_AND);
gncQueryAddBooleanMatch (q2, build_param_list (ENTRY_BILL,
INVOICE_IS_POSTED, NULL),
gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILL,
INVOICE_IS_POSTED, NULL),
TRUE, QUERY_AND);
/* Entry->Order->real-parent == Invoice->parent */
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_ORDER, ORDER_OWNER,
OWNER_PARENTG, NULL),
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_ORDER, ORDER_OWNER,
OWNER_PARENTG, NULL),
invoice_parent, QUERY_OR);
/* Entry->Invoice == NULL */
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_INVOICE,
QUERY_PARAM_GUID, NULL),
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_INVOICE,
QUERY_PARAM_GUID, NULL),
NULL, QUERY_AND);

View File

@ -57,22 +57,6 @@ build_param_list_internal (const char *first, va_list rest)
return (g_slist_reverse (list));
}
static GSList *
build_param_list (char const *param, ...)
{
GSList *param_list;
va_list ap;
if (!param)
return NULL;
va_start (ap, param);
param_list = build_param_list_internal (param, ap);
va_end (ap);
return param_list;
}
/********************************************************************
* xaccQueryGetSplitsUniqueTrans
* Get splits but no more than one from a given transaction.
@ -283,11 +267,11 @@ xaccQueryAddAccountGUIDMatch(Query *q, AccountGUIDList *guid_list,
switch (how) {
case GUID_MATCH_ANY:
case GUID_MATCH_NONE:
param_list = build_param_list (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
param_list = gncQueryBuildParamList (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
break;
case GUID_MATCH_ALL:
param_list = build_param_list (SPLIT_TRANS, TRANS_SPLITLIST,
SPLIT_ACCOUNT_GUID, NULL);
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_SPLITLIST,
SPLIT_ACCOUNT_GUID, NULL);
break;
default:
PERR ("Invalid match type: %d", how);
@ -393,7 +377,7 @@ xaccQueryAddDateMatchTS (Query * q,
return;
}
param_list = build_param_list (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
gncQueryAddTerm (tmp_q, param_list, pred_data, QUERY_AND);
}
@ -404,7 +388,7 @@ xaccQueryAddDateMatchTS (Query * q,
return;
}
param_list = build_param_list (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
gncQueryAddTerm (tmp_q, param_list, pred_data, QUERY_AND);
}
@ -486,7 +470,7 @@ xaccQueryAddClearedMatch(Query * q, cleared_match_t how, QueryOp op)
if (!pred_data)
return;
param_list = build_param_list (SPLIT_RECONCILE, NULL);
param_list = gncQueryBuildParamList (SPLIT_RECONCILE, NULL);
gncQueryAddTerm (q, param_list, pred_data, op);
}
@ -501,11 +485,11 @@ xaccQueryAddGUIDMatch(Query * q, const GUID *guid,
return;
if (!safe_strcmp (id_type, GNC_ID_SPLIT))
param_list = build_param_list (QUERY_PARAM_GUID, NULL);
param_list = gncQueryBuildParamList (QUERY_PARAM_GUID, NULL);
else if (!safe_strcmp (id_type, GNC_ID_TRANS))
param_list = build_param_list (SPLIT_TRANS, QUERY_PARAM_GUID, NULL);
param_list = gncQueryBuildParamList (SPLIT_TRANS, QUERY_PARAM_GUID, NULL);
else if (!safe_strcmp (id_type, GNC_ID_ACCOUNT))
param_list = build_param_list (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
param_list = gncQueryBuildParamList (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
else
PERR ("Invalid match type: %s", id_type);
@ -544,11 +528,11 @@ xaccQueryAddKVPMatch(Query *q, GSList *path, const kvp_value *value,
return;
if (!safe_strcmp (id_type, GNC_ID_SPLIT))
param_list = build_param_list (SPLIT_KVP, NULL);
param_list = gncQueryBuildParamList (SPLIT_KVP, NULL);
else if (!safe_strcmp (id_type, GNC_ID_TRANS))
param_list = build_param_list (SPLIT_TRANS, TRANS_KVP, NULL);
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_KVP, NULL);
else if (!safe_strcmp (id_type, GNC_ID_ACCOUNT))
param_list = build_param_list (SPLIT_ACCOUNT, ACCOUNT_KVP, NULL);
param_list = gncQueryBuildParamList (SPLIT_ACCOUNT, ACCOUNT_KVP, NULL);
else
PERR ("Invalid match type: %s", id_type);

View File

@ -552,6 +552,26 @@ static void query_clear_compiles (QueryNew *q)
/********************************************************************/
/* PUBLISHED API FUNCTIONS */
GSList *
gncQueryBuildParamList (char const *param, ...)
{
GSList *param_list = NULL;
char const *this_param;
va_list ap;
if (!param)
return NULL;
va_start (ap, param);
for (this_param = param; this_param; this_param = va_arg (ap, const char *))
param_list = g_slist_prepend (param_list, (gpointer)this_param);
va_end (ap);
return g_slist_reverse (param_list);
}
void gncQueryAddTerm (QueryNew *q, GSList *param_list,
QueryPredData_t pred_data, QueryOp op)
{

View File

@ -31,6 +31,8 @@ typedef enum {
/* Basic API Functions */
GSList * gncQueryBuildParamList (char const *param, ...);
/* Create a new query. A Query MUST be set with a 'search-for' type.
* you can create and set this value in one step or two */
QueryNew * gncQueryCreate (void);

View File

@ -129,8 +129,6 @@ gnc_RegWindow_set_pcd (RegWindow *data, gpointer pcd)
static int last_width = 0;
static int last_stock_width = 0;
static GSList *date_param = NULL;
/** PROTOTYPES ******************************************************/
static void gnc_register_help_changed_cb( GNCSplitReg *gsr, gpointer data );
@ -336,6 +334,7 @@ gnc_register_set_date_range(RegWindow *regData)
{
RegDateWindow *regDateData;
GtkToggleButton *toggle;
GSList *date_param;
Query *query;
if (!regData)
@ -356,12 +355,9 @@ gnc_register_set_date_range(RegWindow *regData)
toggle = GTK_TOGGLE_BUTTON(regDateData->show_earliest);
if (date_param == NULL) {
date_param = g_slist_prepend (NULL, TRANS_DATE_POSTED);
date_param = g_slist_prepend (date_param, SPLIT_TRANS);
}
date_param = gncQueryBuildParamList(TRANS_DATE_POSTED, SPLIT_TRANS, NULL);
gncQueryPurgeTerms (query, date_param);
g_slist_free(date_param);
if (!gtk_toggle_button_get_active(toggle))
{
@ -858,15 +854,12 @@ regWindowLedger( GNCLedgerDisplay *ledger )
"Show All Transactions",
TRUE );
/* Where does date_param come from? A file-static? Ick. -- jsled */
if (date_param == NULL) {
date_param = g_slist_prepend (NULL, TRANS_DATE_POSTED);
date_param = g_slist_prepend (date_param, SPLIT_TRANS);
}
{
GSList *date_param = gncQueryBuildParamList(TRANS_DATE_POSTED,
SPLIT_TRANS, NULL);
Query *q = gnc_ledger_display_get_query (regData->ledger);
has_date = gncQueryHasTermType (q, date_param);
g_slist_free(date_param);
}
if (has_date)