mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
prepend-and-reverse instead of O(N^2) append
This commit is contained in:
parent
b73cacd58c
commit
b2b8792110
@ -192,11 +192,10 @@ gsidca_get_contained(GncDenseCalModel *model)
|
||||
{
|
||||
GncSxInstances *sx_instances = (GncSxInstances*)sxes->data;
|
||||
if (xaccSchedXactionGetEnabled(sx_instances->sx))
|
||||
{
|
||||
list = g_list_append(list, GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)));
|
||||
}
|
||||
list = g_list_prepend (list, GUINT_TO_POINTER
|
||||
(GPOINTER_TO_UINT (sx_instances->sx)));
|
||||
}
|
||||
return list;
|
||||
return g_list_reverse (list);
|
||||
}
|
||||
|
||||
static gchar*
|
||||
|
@ -1557,7 +1557,7 @@ get_selected_accounts_helper (GtkTreeModel *s_model,
|
||||
/* Only selected if it passes the filter */
|
||||
if (gtvsi->priv->filter_fn == NULL || gtvsi->priv->filter_fn(account, gtvsi->priv->filter_data))
|
||||
{
|
||||
gtvsi->return_list = g_list_append(gtvsi->return_list, account);
|
||||
gtvsi->return_list = g_list_prepend (gtvsi->return_list, account);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1580,6 +1580,7 @@ gnc_tree_view_account_get_selected_accounts (GncTreeViewAccount *view)
|
||||
info.priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
|
||||
gtk_tree_selection_selected_foreach(selection, get_selected_accounts_helper, &info);
|
||||
info.return_list = g_list_reverse (info.return_list);
|
||||
return info.return_list;
|
||||
}
|
||||
|
||||
|
@ -3014,13 +3014,15 @@ loan_create_sxes( LoanAssistantData *ldd )
|
||||
g_string_free( gstr, TRUE );
|
||||
gstr = NULL;
|
||||
|
||||
repaySXes = g_list_append( repaySXes, tcSX );
|
||||
repaySXes = g_list_prepend (repaySXes, tcSX);
|
||||
|
||||
}
|
||||
|
||||
/* repayment */
|
||||
ld_setup_repayment_sx( ldd, rod, paymentSX, tcSX );
|
||||
}
|
||||
|
||||
repaySXes = g_list_reverse (repaySXes);
|
||||
/* Create the SXes */
|
||||
{
|
||||
GList *l;
|
||||
|
@ -308,7 +308,7 @@ find_invalid_mappings (GtkTreeModel *model, GtkTreePath *path,
|
||||
if (((g_strcmp0 (head, "online_id") == 0) && (depth == 1)) || (depth == 2))
|
||||
{
|
||||
GtkTreeRowReference *rowref = gtk_tree_row_reference_new (model, path);
|
||||
*rowref_list = g_list_append (*rowref_list, rowref);
|
||||
*rowref_list = g_list_prepend (*rowref_list, rowref);
|
||||
}
|
||||
}
|
||||
g_free (head);
|
||||
@ -325,9 +325,6 @@ gnc_imap_remove_invalid_maps (ImapDialog *imap_dialog)
|
||||
(GtkTreeModelForeachFunc)find_invalid_mappings,
|
||||
&rr_list);
|
||||
|
||||
// reverse the reference list
|
||||
rr_list = g_list_reverse (rr_list);
|
||||
|
||||
// Suspend GUI refreshing
|
||||
gnc_suspend_gui_refresh();
|
||||
|
||||
|
@ -228,12 +228,12 @@ lv_show_splits_free (GNCLotViewer *lv)
|
||||
Split *split = node->data;
|
||||
if (NULL == xaccSplitGetLot(split))
|
||||
{
|
||||
filtered_list = g_list_append(filtered_list, split);
|
||||
filtered_list = g_list_prepend (filtered_list, split);
|
||||
}
|
||||
}
|
||||
|
||||
/* display list */
|
||||
gnc_split_viewer_fill(lv, lv->split_free_store, filtered_list);
|
||||
gnc_split_viewer_fill(lv, lv->split_free_store, g_list_reverse (filtered_list));
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
|
@ -1629,7 +1629,7 @@ gnc_budget_view_refresh (GncBudgetView *budget_view)
|
||||
if (col != NULL)
|
||||
{
|
||||
gtk_tree_view_append_column (priv->totals_tree_view, col);
|
||||
totals_col_list = g_list_append (totals_col_list, col);
|
||||
totals_col_list = g_list_prepend (totals_col_list, col);
|
||||
}
|
||||
|
||||
num_periods_visible = g_list_length (col_list);
|
||||
@ -1639,7 +1639,7 @@ gnc_budget_view_refresh (GncBudgetView *budget_view)
|
||||
gdk_rgba_free (note_color_selected);
|
||||
|
||||
priv->period_col_list = col_list;
|
||||
priv->totals_col_list = totals_col_list;
|
||||
priv->totals_col_list = g_list_reverse (totals_col_list);
|
||||
|
||||
if (priv->total_col == NULL)
|
||||
{
|
||||
|
@ -3722,7 +3722,7 @@ gnc_plugin_page_register_cmd_print_check (GtkAction* action,
|
||||
{
|
||||
if (xaccSplitGetAccount (split) == account)
|
||||
{
|
||||
splits = g_list_append (splits, split);
|
||||
splits = g_list_prepend (splits, split);
|
||||
gnc_ui_print_check_dialog_create (window, splits);
|
||||
g_list_free (splits);
|
||||
}
|
||||
@ -3733,7 +3733,7 @@ gnc_plugin_page_register_cmd_print_check (GtkAction* action,
|
||||
split = gnc_split_register_get_current_trans_split (reg, NULL);
|
||||
if (split)
|
||||
{
|
||||
splits = g_list_append (splits, split);
|
||||
splits = g_list_prepend (splits, split);
|
||||
gnc_ui_print_check_dialog_create (window, splits);
|
||||
g_list_free (splits);
|
||||
}
|
||||
@ -5349,18 +5349,19 @@ gppr_account_destroy_cb (Account* account)
|
||||
ledger_type = gnc_ledger_display_type (priv->ledger);
|
||||
if (ledger_type == LD_GL)
|
||||
{
|
||||
kill = g_list_append (kill, page);
|
||||
kill = g_list_prepend (kill, page);
|
||||
/* kill it */
|
||||
}
|
||||
else if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
|
||||
{
|
||||
if (guid_compare (acct_guid, &priv->key) == 0)
|
||||
{
|
||||
kill = g_list_append (kill, page);
|
||||
kill = g_list_prepend (kill, page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
kill = g_list_reverse (kill);
|
||||
/* Now kill them. */
|
||||
for (item = kill; item; item = g_list_next (item))
|
||||
{
|
||||
|
@ -2614,7 +2614,7 @@ gnc_plugin_page_register2_cmd_print_check (GtkAction *action,
|
||||
{
|
||||
if (xaccSplitGetAccount(split) == account)
|
||||
{
|
||||
splits = g_list_append(splits, split);
|
||||
splits = g_list_prepend (splits, split);
|
||||
gnc_ui_print_check_dialog_create (window, splits);
|
||||
g_list_free(splits);
|
||||
}
|
||||
@ -2625,7 +2625,7 @@ gnc_plugin_page_register2_cmd_print_check (GtkAction *action,
|
||||
split = gnc_tree_model_split_reg_trans_get_split_equal_to_ancestor(trans, account);
|
||||
if (split)
|
||||
{
|
||||
splits = g_list_append(splits, split);
|
||||
splits = g_list_prepend (splits, split);
|
||||
gnc_ui_print_check_dialog_create (window, splits);
|
||||
g_list_free(splits);
|
||||
}
|
||||
@ -4008,18 +4008,19 @@ gppr_account_destroy_cb (Account *account)
|
||||
ledger_type = gnc_ledger_display2_type (priv->ledger);
|
||||
if (ledger_type == LD2_GL)
|
||||
{
|
||||
kill = g_list_append(kill, page);
|
||||
kill = g_list_prepend (kill, page);
|
||||
/* kill it */
|
||||
}
|
||||
else if ((ledger_type == LD2_SINGLE) || (ledger_type == LD2_SUBACCOUNT))
|
||||
{
|
||||
if (guid_compare(acct_guid, &priv->key) == 0)
|
||||
{
|
||||
kill = g_list_append(kill, page);
|
||||
kill = g_list_prepend (kill, page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
kill = g_list_reverse (kill);
|
||||
/* Now kill them. */
|
||||
for (item = kill; item; item = g_list_next(item))
|
||||
{
|
||||
|
@ -522,9 +522,10 @@ gnc_sx_get_instances(const GDate *range_end, gboolean include_disabled)
|
||||
SchedXaction *sx = (SchedXaction*)sx_iter->data;
|
||||
if (xaccSchedXactionGetEnabled(sx))
|
||||
{
|
||||
enabled_sxes = g_list_append(enabled_sxes, sx);
|
||||
enabled_sxes = g_list_prepend (enabled_sxes, sx);
|
||||
}
|
||||
}
|
||||
enabled_sxes = g_list_reverse (enabled_sxes);
|
||||
instances->sx_instance_list = gnc_g_list_map(enabled_sxes, (GncGMapFunc)_gnc_sx_gen_instances, (gpointer)range_end);
|
||||
g_list_free(enabled_sxes);
|
||||
}
|
||||
|
@ -265,9 +265,9 @@ gnc_g_list_map(GList* list, GncGMapFunc fn, gpointer user_data)
|
||||
GList *rtn = NULL;
|
||||
for (; list != NULL; list = list->next)
|
||||
{
|
||||
rtn = g_list_append(rtn, (*fn)(list->data, user_data));
|
||||
rtn = g_list_prepend (rtn, (*fn)(list->data, user_data));
|
||||
}
|
||||
return rtn;
|
||||
return g_list_reverse (rtn);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -380,12 +380,12 @@ gnc_sx_get_sxes_referencing_account(QofBook *book, Account *acct)
|
||||
GncGUID *guid = NULL;
|
||||
qof_instance_get (QOF_INSTANCE (s), "sx-account", &guid, NULL);
|
||||
if (guid_equal(acct_guid, guid))
|
||||
rtn = g_list_append(rtn, sx);
|
||||
rtn = g_list_prepend (rtn, sx);
|
||||
|
||||
guid_free (guid);
|
||||
}
|
||||
}
|
||||
return rtn;
|
||||
return g_list_reverse (rtn);
|
||||
}
|
||||
|
||||
/* ========================== END OF FILE =============================== */
|
||||
|
@ -400,9 +400,10 @@ gncScrubLotDanglingPayments (GNCLot *lot)
|
||||
if (gnc_numeric_compare (gnc_numeric_abs (free_val), gnc_numeric_abs (ll_val)) > 0)
|
||||
continue;
|
||||
|
||||
filtered_list = g_list_append(filtered_list, free_split);
|
||||
filtered_list = g_list_prepend (filtered_list, free_split);
|
||||
}
|
||||
|
||||
filtered_list = g_list_reverse (filtered_list);
|
||||
match_list = gncSLFindOffsSplits (filtered_list, ll_val);
|
||||
g_list_free (filtered_list);
|
||||
|
||||
|
@ -569,7 +569,7 @@ xaccTransSortSplits (Transaction *trans)
|
||||
split = node->data;
|
||||
if (gnc_numeric_negative_p (xaccSplitGetValue(split)))
|
||||
continue;
|
||||
new_list = g_list_append(new_list, split);
|
||||
new_list = g_list_prepend (new_list, split);
|
||||
}
|
||||
|
||||
/* then credits */
|
||||
@ -578,12 +578,12 @@ xaccTransSortSplits (Transaction *trans)
|
||||
split = node->data;
|
||||
if (!gnc_numeric_negative_p (xaccSplitGetValue(split)))
|
||||
continue;
|
||||
new_list = g_list_append(new_list, split);
|
||||
new_list = g_list_prepend (new_list, split);
|
||||
}
|
||||
|
||||
/* install newly sorted list */
|
||||
g_list_free(trans->splits);
|
||||
trans->splits = new_list;
|
||||
trans->splits = g_list_reverse (new_list);
|
||||
}
|
||||
|
||||
|
||||
|
@ -705,9 +705,9 @@ GList * gncCustomerGetJoblist (const GncCustomer *cust, gboolean show_all)
|
||||
{
|
||||
GncJob *j = iterator->data;
|
||||
if (gncJobGetActive (j))
|
||||
list = g_list_append (list, j);
|
||||
list = g_list_prepend (list, j);
|
||||
}
|
||||
return list;
|
||||
return g_list_reverse (list);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user