r19459 - gnucash/trunk/src/app-utils - Make sx-instance-model more const-correct. Improve documentation.

Christian Stimming cstim at code.gnucash.org
Sat Aug 21 16:57:31 EDT 2010


Author: cstim
Date: 2010-08-21 16:57:31 -0400 (Sat, 21 Aug 2010)
New Revision: 19459
Trac: http://svn.gnucash.org/trac/changeset/19459

Modified:
   gnucash/trunk/src/app-utils/gnc-sx-instance-model.c
   gnucash/trunk/src/app-utils/gnc-sx-instance-model.h
Log:
Make sx-instance-model more const-correct. Improve documentation.

Fix minor memory leak in gnc_sx_get_current_instances(void) - was not
free'ing the GDate of now.

Modified: gnucash/trunk/src/app-utils/gnc-sx-instance-model.c
===================================================================
--- gnucash/trunk/src/app-utils/gnc-sx-instance-model.c	2010-08-21 20:57:19 UTC (rev 19458)
+++ gnucash/trunk/src/app-utils/gnc-sx-instance-model.c	2010-08-21 20:57:31 UTC (rev 19459)
@@ -361,7 +361,7 @@
 {
     GncSxInstances *instances = g_new0(GncSxInstances, 1);
     SchedXaction *sx = (SchedXaction*)data;
-    GDate *range_end = (GDate*)user_data;
+    const GDate *range_end = (const GDate*)user_data;
     GDate creation_end, remind_end;
     GDate cur_date;
     void *sequence_ctx;
@@ -424,14 +424,14 @@
 GncSxInstanceModel*
 gnc_sx_get_current_instances(void)
 {
-    GDate *now = g_date_new();
-    g_date_clear(now, 1);
-    g_date_set_time_t(now, time(NULL));
-    return gnc_sx_get_instances(now, FALSE);
+    GDate now;
+    g_date_clear(&now, 1);
+    g_date_set_time_t(&now, time(NULL));
+    return gnc_sx_get_instances(&now, FALSE);
 }
 
 GncSxInstanceModel*
-gnc_sx_get_instances(GDate *range_end, gboolean include_disabled)
+gnc_sx_get_instances(const GDate *range_end, gboolean include_disabled)
 {
     GList *all_sxes = gnc_book_get_schedxactions(gnc_get_current_book())->sx_list;
     GncSxInstanceModel *instances;
@@ -445,7 +445,7 @@
 
     if (include_disabled)
     {
-        instances->sx_instance_list = gnc_g_list_map(all_sxes, (GncGMapFunc)_gnc_sx_gen_instances, range_end);
+        instances->sx_instance_list = gnc_g_list_map(all_sxes, (GncGMapFunc)_gnc_sx_gen_instances, (gpointer)range_end);
     }
     else
     {
@@ -460,7 +460,7 @@
                 enabled_sxes = g_list_append(enabled_sxes, sx);
             }
         }
-        instances->sx_instance_list = gnc_g_list_map(enabled_sxes, (GncGMapFunc)_gnc_sx_gen_instances, 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);
     }
 
@@ -1441,7 +1441,7 @@
 }
 
 void
-gnc_sx_summary_print(GncSxSummary *summary)
+gnc_sx_summary_print(const GncSxSummary *summary)
 {
     g_message("num_instances: %d", summary->num_instances);
     g_message("num_to_create: %d", summary->num_to_create_instances);

Modified: gnucash/trunk/src/app-utils/gnc-sx-instance-model.h
===================================================================
--- gnucash/trunk/src/app-utils/gnc-sx-instance-model.h	2010-08-21 20:57:19 UTC (rev 19458)
+++ gnucash/trunk/src/app-utils/gnc-sx-instance-model.h	2010-08-21 20:57:31 UTC (rev 19459)
@@ -20,6 +20,9 @@
  * Boston, MA  02110-1301,  USA       gnu at gnu.org
  */
 
+/** \file
+ */
+
 #ifndef _GNC_SX_INSTANCE_MODEL_H
 #define _GNC_SX_INSTANCE_MODEL_H
 
@@ -113,9 +116,16 @@
 
 GType gnc_sx_instance_model_get_type(void);
 
+/** Shorthand for get_instances(now, FALSE); */
 GncSxInstanceModel* gnc_sx_get_current_instances(void);
 
-GncSxInstanceModel* gnc_sx_get_instances(GDate *range_end, gboolean include_disabled);
+/** Allocates a new SxInstanceModel and fills it with generated
+ * instances for all scheduled transactions up to the given range_end
+ * date.
+ *
+ * The caller must unref the returned object by
+ * g_object_unref(G_OBJECT(inst_model)); when no longer in use. */
+GncSxInstanceModel* gnc_sx_get_instances(const GDate *range_end, gboolean include_disabled);
 
 /**
  * Regenerates and updates the GncSxInstances* for the given SX.  Model
@@ -179,6 +189,9 @@
  * the caller owns the list and the items.
  **/
 GList* gnc_sx_instance_model_check_variables(GncSxInstanceModel *model);
+
+/** Really ("effectively") create the transactions from the SX
+ * instances in the given model. */
 void gnc_sx_instance_model_effect_change(GncSxInstanceModel *model,
         gboolean auto_create_only,
         GList **created_transaction_guids,
@@ -200,8 +213,10 @@
  * that need either auto-creation or user-interaction.
  **/
 void gnc_sx_instance_model_summarize(GncSxInstanceModel *model, GncSxSummary *summary);
-void gnc_sx_summary_print(GncSxSummary *summary);
 
+/** Debug output to trace file */
+void gnc_sx_summary_print(const GncSxSummary *summary);
+
 void gnc_sx_get_variables(SchedXaction *sx, GHashTable *var_hash);
 int gnc_sx_parse_vars_from_formula(const char *formula, GHashTable *var_hash, gnc_numeric *result);
 void gnc_sx_randomize_variables(GHashTable *vars);



More information about the gnucash-changes mailing list