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;
|
GncSxInstances *sx_instances = (GncSxInstances*)sxes->data;
|
||||||
if (xaccSchedXactionGetEnabled(sx_instances->sx))
|
if (xaccSchedXactionGetEnabled(sx_instances->sx))
|
||||||
{
|
list = g_list_prepend (list, GUINT_TO_POINTER
|
||||||
list = g_list_append(list, GUINT_TO_POINTER(GPOINTER_TO_UINT(sx_instances->sx)));
|
(GPOINTER_TO_UINT (sx_instances->sx)));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return list;
|
return g_list_reverse (list);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
|
@ -1557,7 +1557,7 @@ get_selected_accounts_helper (GtkTreeModel *s_model,
|
|||||||
/* Only selected if it passes the filter */
|
/* Only selected if it passes the filter */
|
||||||
if (gtvsi->priv->filter_fn == NULL || gtvsi->priv->filter_fn(account, gtvsi->priv->filter_data))
|
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);
|
info.priv = GNC_TREE_VIEW_ACCOUNT_GET_PRIVATE(view);
|
||||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
|
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
|
||||||
gtk_tree_selection_selected_foreach(selection, get_selected_accounts_helper, &info);
|
gtk_tree_selection_selected_foreach(selection, get_selected_accounts_helper, &info);
|
||||||
|
info.return_list = g_list_reverse (info.return_list);
|
||||||
return info.return_list;
|
return info.return_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3014,13 +3014,15 @@ loan_create_sxes( LoanAssistantData *ldd )
|
|||||||
g_string_free( gstr, TRUE );
|
g_string_free( gstr, TRUE );
|
||||||
gstr = NULL;
|
gstr = NULL;
|
||||||
|
|
||||||
repaySXes = g_list_append( repaySXes, tcSX );
|
repaySXes = g_list_prepend (repaySXes, tcSX);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* repayment */
|
/* repayment */
|
||||||
ld_setup_repayment_sx( ldd, rod, paymentSX, tcSX );
|
ld_setup_repayment_sx( ldd, rod, paymentSX, tcSX );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repaySXes = g_list_reverse (repaySXes);
|
||||||
/* Create the SXes */
|
/* Create the SXes */
|
||||||
{
|
{
|
||||||
GList *l;
|
GList *l;
|
||||||
|
@ -308,7 +308,7 @@ find_invalid_mappings (GtkTreeModel *model, GtkTreePath *path,
|
|||||||
if (((g_strcmp0 (head, "online_id") == 0) && (depth == 1)) || (depth == 2))
|
if (((g_strcmp0 (head, "online_id") == 0) && (depth == 1)) || (depth == 2))
|
||||||
{
|
{
|
||||||
GtkTreeRowReference *rowref = gtk_tree_row_reference_new (model, path);
|
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);
|
g_free (head);
|
||||||
@ -325,9 +325,6 @@ gnc_imap_remove_invalid_maps (ImapDialog *imap_dialog)
|
|||||||
(GtkTreeModelForeachFunc)find_invalid_mappings,
|
(GtkTreeModelForeachFunc)find_invalid_mappings,
|
||||||
&rr_list);
|
&rr_list);
|
||||||
|
|
||||||
// reverse the reference list
|
|
||||||
rr_list = g_list_reverse (rr_list);
|
|
||||||
|
|
||||||
// Suspend GUI refreshing
|
// Suspend GUI refreshing
|
||||||
gnc_suspend_gui_refresh();
|
gnc_suspend_gui_refresh();
|
||||||
|
|
||||||
|
@ -228,12 +228,12 @@ lv_show_splits_free (GNCLotViewer *lv)
|
|||||||
Split *split = node->data;
|
Split *split = node->data;
|
||||||
if (NULL == xaccSplitGetLot(split))
|
if (NULL == xaccSplitGetLot(split))
|
||||||
{
|
{
|
||||||
filtered_list = g_list_append(filtered_list, split);
|
filtered_list = g_list_prepend (filtered_list, split);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* display list */
|
/* 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)
|
if (col != NULL)
|
||||||
{
|
{
|
||||||
gtk_tree_view_append_column (priv->totals_tree_view, col);
|
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);
|
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);
|
gdk_rgba_free (note_color_selected);
|
||||||
|
|
||||||
priv->period_col_list = col_list;
|
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)
|
if (priv->total_col == NULL)
|
||||||
{
|
{
|
||||||
|
@ -3722,7 +3722,7 @@ gnc_plugin_page_register_cmd_print_check (GtkAction* action,
|
|||||||
{
|
{
|
||||||
if (xaccSplitGetAccount (split) == account)
|
if (xaccSplitGetAccount (split) == account)
|
||||||
{
|
{
|
||||||
splits = g_list_append (splits, split);
|
splits = g_list_prepend (splits, split);
|
||||||
gnc_ui_print_check_dialog_create (window, splits);
|
gnc_ui_print_check_dialog_create (window, splits);
|
||||||
g_list_free (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);
|
split = gnc_split_register_get_current_trans_split (reg, NULL);
|
||||||
if (split)
|
if (split)
|
||||||
{
|
{
|
||||||
splits = g_list_append (splits, split);
|
splits = g_list_prepend (splits, split);
|
||||||
gnc_ui_print_check_dialog_create (window, splits);
|
gnc_ui_print_check_dialog_create (window, splits);
|
||||||
g_list_free (splits);
|
g_list_free (splits);
|
||||||
}
|
}
|
||||||
@ -5349,18 +5349,19 @@ gppr_account_destroy_cb (Account* account)
|
|||||||
ledger_type = gnc_ledger_display_type (priv->ledger);
|
ledger_type = gnc_ledger_display_type (priv->ledger);
|
||||||
if (ledger_type == LD_GL)
|
if (ledger_type == LD_GL)
|
||||||
{
|
{
|
||||||
kill = g_list_append (kill, page);
|
kill = g_list_prepend (kill, page);
|
||||||
/* kill it */
|
/* kill it */
|
||||||
}
|
}
|
||||||
else if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
|
else if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
|
||||||
{
|
{
|
||||||
if (guid_compare (acct_guid, &priv->key) == 0)
|
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. */
|
/* Now kill them. */
|
||||||
for (item = kill; item; item = g_list_next (item))
|
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)
|
if (xaccSplitGetAccount(split) == account)
|
||||||
{
|
{
|
||||||
splits = g_list_append(splits, split);
|
splits = g_list_prepend (splits, split);
|
||||||
gnc_ui_print_check_dialog_create (window, splits);
|
gnc_ui_print_check_dialog_create (window, splits);
|
||||||
g_list_free(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);
|
split = gnc_tree_model_split_reg_trans_get_split_equal_to_ancestor(trans, account);
|
||||||
if (split)
|
if (split)
|
||||||
{
|
{
|
||||||
splits = g_list_append(splits, split);
|
splits = g_list_prepend (splits, split);
|
||||||
gnc_ui_print_check_dialog_create (window, splits);
|
gnc_ui_print_check_dialog_create (window, splits);
|
||||||
g_list_free(splits);
|
g_list_free(splits);
|
||||||
}
|
}
|
||||||
@ -4008,18 +4008,19 @@ gppr_account_destroy_cb (Account *account)
|
|||||||
ledger_type = gnc_ledger_display2_type (priv->ledger);
|
ledger_type = gnc_ledger_display2_type (priv->ledger);
|
||||||
if (ledger_type == LD2_GL)
|
if (ledger_type == LD2_GL)
|
||||||
{
|
{
|
||||||
kill = g_list_append(kill, page);
|
kill = g_list_prepend (kill, page);
|
||||||
/* kill it */
|
/* kill it */
|
||||||
}
|
}
|
||||||
else if ((ledger_type == LD2_SINGLE) || (ledger_type == LD2_SUBACCOUNT))
|
else if ((ledger_type == LD2_SINGLE) || (ledger_type == LD2_SUBACCOUNT))
|
||||||
{
|
{
|
||||||
if (guid_compare(acct_guid, &priv->key) == 0)
|
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. */
|
/* Now kill them. */
|
||||||
for (item = kill; item; item = g_list_next(item))
|
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;
|
SchedXaction *sx = (SchedXaction*)sx_iter->data;
|
||||||
if (xaccSchedXactionGetEnabled(sx))
|
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);
|
instances->sx_instance_list = gnc_g_list_map(enabled_sxes, (GncGMapFunc)_gnc_sx_gen_instances, (gpointer)range_end);
|
||||||
g_list_free(enabled_sxes);
|
g_list_free(enabled_sxes);
|
||||||
}
|
}
|
||||||
|
@ -265,9 +265,9 @@ gnc_g_list_map(GList* list, GncGMapFunc fn, gpointer user_data)
|
|||||||
GList *rtn = NULL;
|
GList *rtn = NULL;
|
||||||
for (; list != NULL; list = list->next)
|
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
|
void
|
||||||
|
@ -380,12 +380,12 @@ gnc_sx_get_sxes_referencing_account(QofBook *book, Account *acct)
|
|||||||
GncGUID *guid = NULL;
|
GncGUID *guid = NULL;
|
||||||
qof_instance_get (QOF_INSTANCE (s), "sx-account", &guid, NULL);
|
qof_instance_get (QOF_INSTANCE (s), "sx-account", &guid, NULL);
|
||||||
if (guid_equal(acct_guid, guid))
|
if (guid_equal(acct_guid, guid))
|
||||||
rtn = g_list_append(rtn, sx);
|
rtn = g_list_prepend (rtn, sx);
|
||||||
|
|
||||||
guid_free (guid);
|
guid_free (guid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rtn;
|
return g_list_reverse (rtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================== END OF FILE =============================== */
|
/* ========================== 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)
|
if (gnc_numeric_compare (gnc_numeric_abs (free_val), gnc_numeric_abs (ll_val)) > 0)
|
||||||
continue;
|
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);
|
match_list = gncSLFindOffsSplits (filtered_list, ll_val);
|
||||||
g_list_free (filtered_list);
|
g_list_free (filtered_list);
|
||||||
|
|
||||||
|
@ -569,7 +569,7 @@ xaccTransSortSplits (Transaction *trans)
|
|||||||
split = node->data;
|
split = node->data;
|
||||||
if (gnc_numeric_negative_p (xaccSplitGetValue(split)))
|
if (gnc_numeric_negative_p (xaccSplitGetValue(split)))
|
||||||
continue;
|
continue;
|
||||||
new_list = g_list_append(new_list, split);
|
new_list = g_list_prepend (new_list, split);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* then credits */
|
/* then credits */
|
||||||
@ -578,12 +578,12 @@ xaccTransSortSplits (Transaction *trans)
|
|||||||
split = node->data;
|
split = node->data;
|
||||||
if (!gnc_numeric_negative_p (xaccSplitGetValue(split)))
|
if (!gnc_numeric_negative_p (xaccSplitGetValue(split)))
|
||||||
continue;
|
continue;
|
||||||
new_list = g_list_append(new_list, split);
|
new_list = g_list_prepend (new_list, split);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* install newly sorted list */
|
/* install newly sorted list */
|
||||||
g_list_free(trans->splits);
|
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;
|
GncJob *j = iterator->data;
|
||||||
if (gncJobGetActive (j))
|
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