[Gnucash-changes] r11848 - gnucash/trunk/src/gnome-search - Convert to newer method of allocating private data structures for

David Hampton hampton at cvs.gnucash.org
Sat Nov 5 21:47:19 EST 2005


Author: hampton
Date: 2005-11-05 21:47:18 -0500 (Sat, 05 Nov 2005)
New Revision: 11848

Modified:
   gnucash/trunk/src/gnome-search/gnc-general-search.c
   gnucash/trunk/src/gnome-search/gnc-general-search.h
   gnucash/trunk/src/gnome-search/search-account.c
   gnucash/trunk/src/gnome-search/search-account.h
   gnucash/trunk/src/gnome-search/search-boolean.c
   gnucash/trunk/src/gnome-search/search-boolean.h
   gnucash/trunk/src/gnome-search/search-core-type.c
   gnucash/trunk/src/gnome-search/search-core-type.h
   gnucash/trunk/src/gnome-search/search-date.c
   gnucash/trunk/src/gnome-search/search-date.h
   gnucash/trunk/src/gnome-search/search-double.c
   gnucash/trunk/src/gnome-search/search-double.h
   gnucash/trunk/src/gnome-search/search-int64.c
   gnucash/trunk/src/gnome-search/search-int64.h
   gnucash/trunk/src/gnome-search/search-numeric.c
   gnucash/trunk/src/gnome-search/search-numeric.h
   gnucash/trunk/src/gnome-search/search-reconciled.c
   gnucash/trunk/src/gnome-search/search-reconciled.h
   gnucash/trunk/src/gnome-search/search-string.c
   gnucash/trunk/src/gnome-search/search-string.h
Log:
Convert to newer method of allocating private data structures for
objects.  This allows glib to consolidate the space for all of the
various public and private data structures on an object and reduce
memory fragmentation.



Modified: gnucash/trunk/src/gnome-search/gnc-general-search.c
===================================================================
--- gnucash/trunk/src/gnome-search/gnc-general-search.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/gnc-general-search.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -54,7 +54,7 @@
 static void gnc_general_search_class_init   (GNCGeneralSearchClass *class);
 static void gnc_general_search_destroy      (GtkObject             *object);
 
-#define _PRIVATE(x) (((GNCSearchString *)(x))->priv)
+typedef struct _GNCGeneralSearchPrivate GNCGeneralSearchPrivate;
 
 struct _GNCGeneralSearchPrivate {
 	GUID			guid;
@@ -66,6 +66,9 @@
 	gint			component_id;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_GENERAL_SEARCH, GNCGeneralSearchPrivate))
+
 static GtkHBoxClass *parent_class;
 static guint general_search_signals[LAST_SIGNAL];
 
@@ -122,12 +125,13 @@
 	object_class->destroy = gnc_general_search_destroy;
 
 	klass->changed = NULL;
+
+	g_type_class_add_private(klass, sizeof(GNCGeneralSearchPrivate));
 }
 
 static void
 gnc_general_search_init (GNCGeneralSearch *gsl)
 {
-	gsl->priv = g_malloc0 (sizeof (*gsl->priv));
 	gsl->selected_item = NULL;
 }
 
@@ -135,6 +139,7 @@
 gnc_general_search_destroy (GtkObject *object)
 {
 	GNCGeneralSearch *gsl;
+	GNCGeneralSearchPrivate *priv;
 
 	g_return_if_fail (object != NULL);
 	g_return_if_fail (GNC_IS_GENERAL_SEARCH (object));
@@ -144,21 +149,15 @@
 	gsl->entry = NULL;
 	gsl->button = NULL;
 
-	if (gsl->priv) {
-		/* Clear the callbacks */
-		if (gsl->priv->sw) {
-			gnc_search_dialog_set_select_cb (gsl->priv->sw, NULL,
-							 NULL, FALSE);
-			gnc_search_dialog_disconnect (gsl->priv->sw, gsl);
-			gsl->priv->sw = NULL;
-		}
+	priv = _PRIVATE(gsl);
+	/* Clear the callbacks */
+	if (priv->sw) {
+		gnc_search_dialog_set_select_cb (priv->sw, NULL, NULL, FALSE);
+		gnc_search_dialog_disconnect (priv->sw, gsl);
+		priv->sw = NULL;
 
 		/* Unregister ourselves */
-		gnc_unregister_gui_component (gsl->priv->component_id);
-
-		/* And let go */
-		g_free (gsl->priv);
-		gsl->priv = NULL;
+		gnc_unregister_gui_component (priv->component_id);
 	}
 
 	if (GTK_OBJECT_CLASS (parent_class)->destroy)
@@ -169,12 +168,14 @@
 static void
 reset_selection_text (GNCGeneralSearch *gsl)
 {
+	GNCGeneralSearchPrivate *priv;
 	const char *text;
 
+	priv = _PRIVATE(gsl);
 	if (gsl->selected_item == NULL)
 		text = "";
 	else
-		text = gncObjectPrintable (gsl->priv->type, gsl->selected_item);
+		text = gncObjectPrintable (priv->type, gsl->selected_item);
 
 	gtk_entry_set_text(GTK_ENTRY(gsl->entry), text);
 }
@@ -184,10 +185,12 @@
 refresh_handler (GHashTable *changes, gpointer data)
 {
 	GNCGeneralSearch *gsl = data;
+	GNCGeneralSearchPrivate *priv;
 	const EventInfo *info;
 
+	priv = _PRIVATE(gsl);
 	if (changes) {
-		info = gnc_gui_get_entity_events (changes, &gsl->priv->guid);
+		info = gnc_gui_get_entity_events (changes, &priv->guid);
 		if (info) {
 			if (info->event_mask & GNC_EVENT_DESTROY)
 				gsl->selected_item = NULL;
@@ -209,7 +212,10 @@
 on_close_cb (GtkDialog *dialog, gpointer user_data)
 {
 	GNCGeneralSearch *gsl = user_data;
-	gsl->priv->sw = NULL;
+	GNCGeneralSearchPrivate *priv;
+
+	priv = _PRIVATE(gsl);
+	priv->sw = NULL;
 	return FALSE;
 }
 
@@ -218,21 +224,23 @@
 search_cb(GtkButton * button, gpointer user_data)
 {
 	GNCGeneralSearch *gsl = user_data;
+	GNCGeneralSearchPrivate *priv;
 	GNCSearchWindow *sw;
 
-	if (gsl->priv->sw) {
-		gnc_search_dialog_raise (gsl->priv->sw);
+	priv = _PRIVATE(gsl);
+	if (priv->sw) {
+		gnc_search_dialog_raise (priv->sw);
 		return;
 	}
 
-	sw = (gsl->priv->search_cb)(gsl->selected_item, gsl->priv->user_data);
+	sw = (priv->search_cb)(gsl->selected_item, priv->user_data);
 
 	/* NULL means nothing to 'select' */
 	if (sw == NULL)
 		return;
 
 	/* Ok, save this search window and setup callbacks */
-	gsl->priv->sw = sw;
+	priv->sw = sw;
 
 	/* Catch when the search dialog closes */
 	gnc_search_dialog_connect_on_close (sw, GTK_SIGNAL_FUNC (on_close_cb),
@@ -272,6 +280,7 @@
 			GNCSearchCB search_cb, gpointer user_data)
 {
 	GNCGeneralSearch *gsl;
+	GNCGeneralSearchPrivate *priv;
 	const QofParam *get_guid;
 
 	g_return_val_if_fail (type && label && search_cb, NULL);
@@ -279,15 +288,16 @@
 	get_guid = qof_class_get_parameter (type, QOF_PARAM_GUID);
 	g_return_val_if_fail (get_guid, NULL);
 
-	gsl = g_object_new (gnc_general_search_get_type (), NULL);
+	gsl = g_object_new (GNC_TYPE_GENERAL_SEARCH, NULL);
 
 	create_children (gsl, label);
 
-	gsl->priv->type = type;
-	gsl->priv->search_cb = search_cb;
-	gsl->priv->user_data = user_data;
-	gsl->priv->get_guid = get_guid;
-	gsl->priv->component_id =
+	priv = _PRIVATE(gsl);
+	priv->type = type;
+	priv->search_cb = search_cb;
+	priv->user_data = user_data;
+	priv->get_guid = get_guid;
+	priv->component_id =
 		gnc_register_gui_component (GNCGENERALSEARCH_CLASS,
 					    refresh_handler, NULL, gsl);
 
@@ -306,9 +316,12 @@
 void
 gnc_general_search_set_selected (GNCGeneralSearch *gsl, gpointer selection)
 {
+	GNCGeneralSearchPrivate *priv;
+
 	g_return_if_fail(gsl != NULL);
 	g_return_if_fail(GNC_IS_GENERAL_SEARCH(gsl));
 
+	priv = _PRIVATE(gsl);
 	if (selection != gsl->selected_item) {
 		gsl->selected_item = selection;
 		reset_selection_text (gsl);
@@ -316,18 +329,17 @@
 			      general_search_signals[SELECTION_CHANGED]);
 	}
 
-	gnc_gui_component_clear_watches (gsl->priv->component_id);
+	gnc_gui_component_clear_watches (priv->component_id);
 
-	if (selection) 
-   {
-      const QofParam *get_guid = gsl->priv->get_guid;
-		gsl->priv->guid = * ((GUID *)(get_guid->param_getfcn
+	if (selection) {
+		const QofParam *get_guid = priv->get_guid;
+		priv->guid = * ((GUID *)(get_guid->param_getfcn
 					      (gsl->selected_item, get_guid)));
 		gnc_gui_component_watch_entity
-			(gsl->priv->component_id, &(gsl->priv->guid),
+			(priv->component_id, &(priv->guid),
 			 GNC_EVENT_MODIFY | GNC_EVENT_DESTROY);
 	} else
-		gsl->priv->guid = *xaccGUIDNULL ();
+		priv->guid = *xaccGUIDNULL ();
 }
 
 /**

Modified: gnucash/trunk/src/gnome-search/gnc-general-search.h
===================================================================
--- gnucash/trunk/src/gnome-search/gnc-general-search.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/gnc-general-search.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -36,14 +36,17 @@
 #include "dialog-search.h"
 #include "gnc-book.h"
 
+#define GNC_TYPE_GENERAL_SEARCH \
+	(gnc_general_search_get_type ())
+
 #define GNC_GENERAL_SEARCH(obj) \
-	G_TYPE_CHECK_INSTANCE_CAST (obj, gnc_general_search_get_type(), GNCGeneralSearch)
+	G_TYPE_CHECK_INSTANCE_CAST (obj, GNC_TYPE_GENERAL_SEARCH, GNCGeneralSearch)
 
 #define GNC_GENERAL_SEARCH_CLASS(klass) \
-	G_TYPE_CLASS_CAST (klass, gnc_general_search_get_type(), \
+	G_TYPE_CLASS_CAST (klass, GNC_TYPE_GENERAL_SEARCH, \
 				GNCGeneralSearchClass)
 #define GNC_IS_GENERAL_SEARCH(obj) \
-	G_TYPE_CHECK_INSTANCE_TYPE (obj, gnc_general_search_get_type ())
+	G_TYPE_CHECK_INSTANCE_TYPE (obj, GNC_TYPE_GENERAL_SEARCH)
 
 /*
  * If this returns NULL, then do nothing (probably an edit window).  If
@@ -54,7 +57,6 @@
 
 typedef struct {
   GtkHBox hbox;
-  struct _GNCGeneralSearchPrivate	*priv;
 
   GtkWidget *	entry;  /* display of selection name */
   GtkWidget *	button; /* button for popping up search window */

Modified: gnucash/trunk/src/gnome-search/search-account.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-account.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-account.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -42,13 +42,16 @@
 static void gnc_search_account_init	(GNCSearchAccount *gspaper);
 static void gnc_search_account_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchAccount *)(x))->priv)
+typedef struct _GNCSearchAccountPrivate GNCSearchAccountPrivate;
 
 struct _GNCSearchAccountPrivate {
   gboolean	match_all;
   GList *	selected_accounts;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountPrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 
@@ -94,12 +97,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchAccountPrivate));
 }
 
 static void
 gnc_search_account_init (GNCSearchAccount *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->how = GUID_MATCH_ANY;
 }
 
@@ -109,8 +113,6 @@
   GNCSearchAccount *o = (GNCSearchAccount *)obj;
   g_assert (IS_GNCSEARCH_ACCOUNT (o));
 
-  g_free(o->priv);
-	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -124,7 +126,7 @@
 GNCSearchAccount *
 gnc_search_account_new (void)
 {
-  GNCSearchAccount *o = g_object_new(gnc_search_account_get_type (), NULL);
+  GNCSearchAccount *o = g_object_new(GNC_TYPE_SEARCH_ACCOUNT, NULL);
   return o;
 }
 
@@ -138,8 +140,12 @@
 GNCSearchAccount *
 gnc_search_account_matchall_new (void)
 {
-  GNCSearchAccount *o = g_object_new(gnc_search_account_get_type (), NULL);
-  o->priv->match_all = TRUE;
+  GNCSearchAccount *o;
+  GNCSearchAccountPrivate *priv;
+
+  o = g_object_new(GNC_TYPE_SEARCH_ACCOUNT, NULL);
+  priv = _PRIVATE(o);
+  priv->match_all = TRUE;
   o->how = GUID_MATCH_ALL;
   return o;
 }
@@ -148,12 +154,14 @@
 gncs_validate (GNCSearchCoreType *fe)
 {
   GNCSearchAccount *fi = (GNCSearchAccount *)fe;
+  GNCSearchAccountPrivate *priv;
   gboolean valid = TRUE;
 
   g_return_val_if_fail (fi, FALSE);
   g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), FALSE);
 	
-  if (fi->priv->selected_accounts == NULL && fi->how ) {
+  priv = _PRIVATE(fi);
+  if (priv->selected_accounts == NULL && fi->how ) {
     valid = FALSE;
     gnc_error_dialog (NULL, _("You have not selected any accounts"));
   }
@@ -192,12 +200,14 @@
 make_menu (GNCSearchCoreType *fe)
 {
   GNCSearchAccount *fi = (GNCSearchAccount *)fe;
+  GNCSearchAccountPrivate *priv;
   GtkWidget *menu, *item, *first, *opmenu;
   int current = 0, index = 0;
 
   menu = gtk_menu_new ();
 
-  if (fi->priv->match_all) {
+  priv = _PRIVATE(fi);
+  if (priv->match_all) {
     ADD_MENU_ITEM (_("matches all accounts"), GUID_MATCH_ALL);
     first = item;
   } else {
@@ -218,7 +228,10 @@
 static char *
 describe_button (GNCSearchAccount *fi)
 {
-  if (fi->priv->selected_accounts)
+  GNCSearchAccountPrivate *priv;
+
+  priv = _PRIVATE(fi);
+  if (priv->selected_accounts)
     return (_("Selected Accounts"));
   return (_("Choose Accounts"));
 }
@@ -226,6 +239,7 @@
 static void
 button_clicked (GtkButton *button, GNCSearchAccount *fi)
 {
+  GNCSearchAccountPrivate *priv;
   GtkDialog *dialog;
   GtkWidget *account_tree;
   GtkWidget *accounts_scroller;
@@ -240,9 +254,10 @@
   gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
 
   /* Select the currently-selected accounts */
-  if (fi->priv->selected_accounts)
+  priv = _PRIVATE(fi);
+  if (priv->selected_accounts)
     gnc_tree_view_account_set_selected_accounts (GNC_TREE_VIEW_ACCOUNT(account_tree),
-						 fi->priv->selected_accounts, FALSE);
+						 priv->selected_accounts, FALSE);
 
   /* Create the account scroller and put the tree in it */
   accounts_scroller = gtk_scrolled_window_new (NULL, NULL);
@@ -271,10 +286,10 @@
 
   /* Now run the dialog */
   if (gtk_dialog_run (dialog) == GTK_RESPONSE_OK) {
-    if (fi->priv->selected_accounts)
-      g_list_free (fi->priv->selected_accounts);
+    if (priv->selected_accounts)
+      g_list_free (priv->selected_accounts);
 
-    fi->priv->selected_accounts =
+    priv->selected_accounts =
       gnc_tree_view_account_get_selected_accounts (GNC_TREE_VIEW_ACCOUNT (account_tree));
 
     desc = describe_button (fi);
@@ -316,13 +331,15 @@
 
 static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
 {
+  GNCSearchAccountPrivate *priv;
   GNCSearchAccount *fi = (GNCSearchAccount *)fe;
   GList *l = NULL, *node;
 
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fi), NULL);
 
-  for (node = fi->priv->selected_accounts; node; node = node->next) {
+  priv = _PRIVATE(fi);
+  for (node = priv->selected_accounts; node; node = node->next) {
     Account *acc = node->data;
     const GUID *guid = xaccAccountGetGUID (acc);
     l = g_list_prepend (l, (gpointer)guid);
@@ -335,14 +352,17 @@
 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
 {
   GNCSearchAccount *se, *fse = (GNCSearchAccount *)fe;
+  GNCSearchAccountPrivate *se_priv, *fse_priv;
 
   g_return_val_if_fail (fse, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_ACCOUNT (fse), NULL);
+  fse_priv = _PRIVATE(fse);
 
   se = gnc_search_account_new ();
+  se_priv = _PRIVATE(se);
   se->how = fse->how;
-  se->priv->match_all = fse->priv->match_all;
-  se->priv->selected_accounts = g_list_copy (fse->priv->selected_accounts);
+  se_priv->match_all = fse_priv->match_all;
+  se_priv->selected_accounts = g_list_copy (fse_priv->selected_accounts);
 
   return (GNCSearchCoreType *)se;
 }

Modified: gnucash/trunk/src/gnome-search/search-account.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-account.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-account.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -24,16 +24,16 @@
 #include "search-core-type.h"
 #include "QueryNew.h"
 
-#define GNCSEARCH_ACCOUNT(obj)	GTK_CHECK_CAST (obj, gnc_search_account_get_type (), GNCSearchAccount)
-#define GNCSEARCH_ACCOUNT_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_account_get_type (), GNCSearchAccountClass)
-#define IS_GNCSEARCH_ACCOUNT(obj)      GTK_CHECK_TYPE (obj, gnc_search_account_get_type ())
+#define GNC_TYPE_SEARCH_ACCOUNT 	(gnc_search_account_get_type ())
+#define GNCSEARCH_ACCOUNT(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccount)
+#define GNCSEARCH_ACCOUNT_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_ACCOUNT, GNCSearchAccountClass)
+#define IS_GNCSEARCH_ACCOUNT(obj)	GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_ACCOUNT)
 
 typedef struct _GNCSearchAccount	GNCSearchAccount;
 typedef struct _GNCSearchAccountClass	GNCSearchAccountClass;
 
 struct _GNCSearchAccount {
   GNCSearchCoreType parent;
-  struct _GNCSearchAccountPrivate *priv;
 
   guid_match_t	how;
 };

Modified: gnucash/trunk/src/gnome-search/search-boolean.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-boolean.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-boolean.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -39,11 +39,15 @@
 static void gnc_search_boolean_init	(GNCSearchBoolean *gspaper);
 static void gnc_search_boolean_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchBoolean *)(x))->priv)
+typedef struct _GNCSearchBooleanPrivate GNCSearchBooleanPrivate;
 
 struct _GNCSearchBooleanPrivate {
+  gpointer dummy;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanPrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -88,12 +92,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchBooleanPrivate));
 }
 
 static void
 gnc_search_boolean_init (GNCSearchBoolean *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->how = COMPARE_EQUAL;
   o->value = TRUE;
 }
@@ -104,8 +109,6 @@
   GNCSearchBoolean *o = (GNCSearchBoolean *)obj;
   g_assert (IS_GNCSEARCH_BOOLEAN (o));
 
-  g_free(o->priv);
-	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -119,7 +122,7 @@
 GNCSearchBoolean *
 gnc_search_boolean_new (void)
 {
-  GNCSearchBoolean *o = g_object_new(gnc_search_boolean_get_type (), NULL);
+  GNCSearchBoolean *o = g_object_new(GNC_TYPE_SEARCH_BOOLEAN, NULL);
   return o;
 }
 

Modified: gnucash/trunk/src/gnome-search/search-boolean.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-boolean.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-boolean.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -24,16 +24,16 @@
 #include "search-core-type.h"
 #include "QueryNew.h"
 
-#define GNCSEARCH_BOOLEAN(obj)	GTK_CHECK_CAST (obj, gnc_search_boolean_get_type (), GNCSearchBoolean)
-#define GNCSEARCH_BOOLEAN_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_boolean_get_type (), GNCSearchBooleanClass)
-#define IS_GNCSEARCH_BOOLEAN(obj)      GTK_CHECK_TYPE (obj, gnc_search_boolean_get_type ())
+#define GNC_TYPE_SEARCH_BOOLEAN		(gnc_search_boolean_get_type ())
+#define GNCSEARCH_BOOLEAN(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBoolean)
+#define GNCSEARCH_BOOLEAN_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_BOOLEAN, GNCSearchBooleanClass)
+#define IS_GNCSEARCH_BOOLEAN(obj)	GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_BOOLEAN)
 
 typedef struct _GNCSearchBoolean	GNCSearchBoolean;
 typedef struct _GNCSearchBooleanClass	GNCSearchBooleanClass;
 
 struct _GNCSearchBoolean {
   GNCSearchCoreType parent;
-  struct _GNCSearchBooleanPrivate *priv;
 
   query_compare_t	how;
   gboolean		value;

Modified: gnucash/trunk/src/gnome-search/search-core-type.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-core-type.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-core-type.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -48,10 +48,15 @@
 static void gnc_search_core_type_init	(GNCSearchCoreType *gspaper);
 static void gnc_search_core_type_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchCoreType *)(x))->priv)
+typedef struct _GNCSearchCoreTypePrivate GNCSearchCoreTypePrivate;
+
 struct _GNCSearchCoreTypePrivate {
+  gpointer dummy;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypePrivate))
+
 static GtkObjectClass *parent_class;
 
 static GHashTable *typeTable = NULL;
@@ -94,19 +99,20 @@
   klass->validate = validate;
   klass->grab_focus = grab_focus;
   klass->editable_enters = editable_enters;
+
+  g_type_class_add_private(klass, sizeof(GNCSearchCoreTypePrivate));
 }
 
 static void
 gnc_search_core_type_init (GNCSearchCoreType *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
 }
 
 static void
 gnc_search_core_type_finalize (GObject *obj)
 {
   GNCSearchCoreType *o = (GNCSearchCoreType *)obj;
-  g_free(o->priv);
+  g_assert (GNC_IS_SEARCH_CORE_TYPE (o));
 
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }

Modified: gnucash/trunk/src/gnome-search/search-core-type.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-core-type.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-core-type.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -29,12 +29,11 @@
 #define GNC_TYPE_SEARCH_CORE_TYPE		(gnc_search_core_type_get_type ())
 #define GNC_SEARCH_CORE_TYPE(o)			(G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreType))
 #define GNC_SEARCH_CORE_TYPE_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass))
-#define GNC_IS_SEARCH_CORE_TYPE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_CORE_TYPE)
+#define GNC_IS_SEARCH_CORE_TYPE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_SEARCH_CORE_TYPE))
 #define GNC_SEARCH_CORE_TYPE_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_SEARCH_CORE_TYPE, GNCSearchCoreTypeClass))
 
 typedef struct {
   GtkObject parent;
-  struct _GNCSearchCoreTypePrivate *priv;
 
   GNCSearchParam *	param;
 } GNCSearchCoreType;

Modified: gnucash/trunk/src/gnome-search/search-date.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-date.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-date.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -43,12 +43,15 @@
 static void gnc_search_date_init	(GNCSearchDate *gspaper);
 static void gnc_search_date_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchDate *)(x))->priv)
+typedef struct _GNCSearchDatePrivate GNCSearchDatePrivate;
 
 struct _GNCSearchDatePrivate {
   GtkWidget *entry;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DATE, GNCSearchDatePrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -95,12 +98,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchDatePrivate));
 }
 
 static void
 gnc_search_date_init (GNCSearchDate *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->ts.tv_sec = time(NULL);
   o->how = COMPARE_LT;
 }
@@ -108,14 +112,16 @@
 static void
 gnc_search_date_finalize (GObject *obj)
 {
-  GNCSearchDate *o = (GNCSearchDate *)obj;
-  g_assert (IS_GNCSEARCH_DATE (o));
+  GNCSearchDate *o;
+  GNCSearchDatePrivate *priv;
 
-  if (o->priv->entry)
-    gtk_widget_destroy (o->priv->entry);
+  g_assert (IS_GNCSEARCH_DATE (obj));
 
-  g_free(o->priv);
-	
+  o = GNCSEARCH_DATE(obj);
+  priv = _PRIVATE(o);
+  if (priv->entry)
+    gtk_widget_destroy (priv->entry);
+
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -129,7 +135,7 @@
 GNCSearchDate *
 gnc_search_date_new (void)
 {
-  GNCSearchDate *o = g_object_new(gnc_search_date_get_type (), NULL);
+  GNCSearchDate *o = g_object_new(GNC_TYPE_SEARCH_DATE, NULL);
   return o;
 }
 
@@ -225,24 +231,28 @@
 grab_focus (GNCSearchCoreType *fe)
 {
   GNCSearchDate *fi = (GNCSearchDate *)fe;
+  GNCSearchDatePrivate *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_DATE (fi));
 
-  if (fi->priv->entry)
-    gtk_widget_grab_focus (GNC_DATE_EDIT(fi->priv->entry)->date_entry);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_widget_grab_focus (GNC_DATE_EDIT(priv->entry)->date_entry);
 }
 
 static void
 editable_enters (GNCSearchCoreType *fe)
 {
   GNCSearchDate *fi = (GNCSearchDate *)fe;
+  GNCSearchDatePrivate *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_DATE (fi));
 
-  if (fi->priv->entry)
-    gnc_date_editable_enters (GNC_DATE_EDIT (fi->priv->entry), TRUE);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gnc_date_editable_enters (GNC_DATE_EDIT (priv->entry), TRUE);
 }
 
 static GtkWidget *
@@ -250,10 +260,12 @@
 {
   GtkWidget *entry, *menu, *box;
   GNCSearchDate *fi = (GNCSearchDate *)fe;
+  GNCSearchDatePrivate *priv;
 	
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), NULL);
 
+  priv = _PRIVATE(fi);
   box = gtk_hbox_new (FALSE, 3);
 
   /* Build and connect the option menu */
@@ -265,7 +277,7 @@
   g_signal_connect (G_OBJECT (entry), "date_changed", G_CALLBACK (date_changed), fe);
   gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
   g_object_ref (entry);
-  fi->priv->entry = entry;
+  priv->entry = entry;
 
   /* And return the box */
   return box;
@@ -274,13 +286,15 @@
 static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
 {
   GNCSearchDate *fi = (GNCSearchDate *)fe;
+  GNCSearchDatePrivate *priv;
 
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_DATE (fi), NULL);
 
   /* Make sure we actually use the currently-entered date */
-  if (fi->priv->entry)
-    fi->ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (fi->priv->entry));
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    fi->ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (priv->entry));
 
   return gncQueryDatePredicate (fi->how, DATE_MATCH_NORMAL, fi->ts);
 }

Modified: gnucash/trunk/src/gnome-search/search-date.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-date.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-date.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -25,16 +25,16 @@
 #include "QueryNew.h"
 #include "gnc-date.h"
 
-#define GNCSEARCH_DATE(obj)	GTK_CHECK_CAST (obj, gnc_search_date_get_type (), GNCSearchDate)
-#define GNCSEARCH_DATE_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_date_get_type (), GNCSearchDateClass)
-#define IS_GNCSEARCH_DATE(obj)      GTK_CHECK_TYPE (obj, gnc_search_date_get_type ())
+#define GNC_TYPE_SEARCH_DATE		(gnc_search_date_get_type ())
+#define GNCSEARCH_DATE(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_DATE, GNCSearchDate)
+#define GNCSEARCH_DATE_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DATE, GNCSearchDateClass)
+#define IS_GNCSEARCH_DATE(obj)     	GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_DATE)
 
 typedef struct _GNCSearchDate	GNCSearchDate;
 typedef struct _GNCSearchDateClass	GNCSearchDateClass;
 
 struct _GNCSearchDate {
   GNCSearchCoreType parent;
-  struct _GNCSearchDatePrivate *priv;
 
   query_compare_t	how;
   Timespec		ts;

Modified: gnucash/trunk/src/gnome-search/search-double.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-double.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-double.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -42,13 +42,16 @@
 static void gnc_search_double_init	(GNCSearchDouble *gspaper);
 static void gnc_search_double_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchDouble *)(x))->priv)
+typedef struct _GNCSearchDoublePrivate GNCSearchDoublePrivate;
 
 struct _GNCSearchDoublePrivate {
   GtkWidget * entry;
   GNCAmountEdit *gae;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoublePrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -95,12 +98,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchDoublePrivate));
 }
 
 static void
 gnc_search_double_init (GNCSearchDouble *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->how = COMPARE_EQUAL;
 }
 
@@ -110,8 +114,6 @@
   GNCSearchDouble *o = (GNCSearchDouble *)obj;
   g_assert (IS_GNCSEARCH_DOUBLE (o));
 
-  g_free(o->priv);
-	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -125,7 +127,7 @@
 GNCSearchDouble *
 gnc_search_double_new (void)
 {
-  GNCSearchDouble *o = g_object_new(gnc_search_double_get_type (), NULL);
+  GNCSearchDouble *o = g_object_new(GNC_TYPE_SEARCH_DOUBLE, NULL);
   return o;
 }
 
@@ -221,24 +223,28 @@
 grab_focus (GNCSearchCoreType *fe)
 {
   GNCSearchDouble *fi = (GNCSearchDouble *)fe;
+  GNCSearchDoublePrivate *priv ;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
 
-  if (fi->priv->entry)
-    gtk_widget_grab_focus (fi->priv->entry);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_widget_grab_focus (priv->entry);
 }
 
 static void
 editable_enters (GNCSearchCoreType *fe)
 {
   GNCSearchDouble *fi = (GNCSearchDouble *)fe;
+  GNCSearchDoublePrivate *priv ;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_DOUBLE (fi));
 
-  if (fi->priv->entry)
-    gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
 }
 
 static GtkWidget *
@@ -246,10 +252,12 @@
 {
   GtkWidget *entry, *menu, *box;
   GNCSearchDouble *fi = (GNCSearchDouble *)fe;
+  GNCSearchDoublePrivate *priv ;
 	
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL);
 
+  priv = _PRIVATE(fi);
   box = gtk_hbox_new (FALSE, 3);
 
   /* Build and connect the option menu */
@@ -262,8 +270,8 @@
     gnc_amount_edit_set_damount (GNC_AMOUNT_EDIT (entry), fi->value);
   g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe);
   gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
-  fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
-  fi->priv->gae = GNC_AMOUNT_EDIT (entry);
+  priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
+  priv->gae = GNC_AMOUNT_EDIT (entry);
 
   /* And return the box */
   return box;
@@ -272,12 +280,14 @@
 static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
 {
   GNCSearchDouble *fi = (GNCSearchDouble *)fe;
+  GNCSearchDoublePrivate *priv ;
 
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_DOUBLE (fi), NULL);
 
   /* force the computation of the entry, because we may not get the signal */
-  entry_changed (fi->priv->gae, fi);
+  priv = _PRIVATE(fi);
+  entry_changed (priv->gae, fi);
 
   return gncQueryDoublePredicate (fi->how, fi->value);
 }

Modified: gnucash/trunk/src/gnome-search/search-double.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-double.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-double.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -24,16 +24,16 @@
 #include "search-core-type.h"
 #include "QueryNew.h"
 
-#define GNCSEARCH_DOUBLE(obj)	GTK_CHECK_CAST (obj, gnc_search_double_get_type (), GNCSearchDouble)
-#define GNCSEARCH_DOUBLE_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_double_get_type (), GNCSearchDoubleClass)
-#define IS_GNCSEARCH_DOUBLE(obj)      GTK_CHECK_TYPE (obj, gnc_search_double_get_type ())
+#define GNC_TYPE_SEARCH_DOUBLE		(gnc_search_double_get_type ())
+#define GNCSEARCH_DOUBLE(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDouble)
+#define GNCSEARCH_DOUBLE_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_DOUBLE, GNCSearchDoubleClass)
+#define IS_GNCSEARCH_DOUBLE(obj)	GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_DOUBLE)
 
 typedef struct _GNCSearchDouble	GNCSearchDouble;
 typedef struct _GNCSearchDoubleClass	GNCSearchDoubleClass;
 
 struct _GNCSearchDouble {
   GNCSearchCoreType parent;
-  struct _GNCSearchDoublePrivate *priv;
 
   query_compare_t	how;
   double		value;

Modified: gnucash/trunk/src/gnome-search/search-int64.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-int64.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-int64.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -42,13 +42,17 @@
 static void gnc_search_int64_init	(GNCSearchInt64 *gspaper);
 static void gnc_search_int64_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchInt64 *)(x))->priv)
 
+typedef struct _GNCSearchInt64Private GNCSearchInt64Private;
+
 struct _GNCSearchInt64Private {
   GtkWidget *entry;
   GNCAmountEdit *gae;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_INT64, GNCSearchInt64Private))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -95,12 +99,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchInt64Private));
 }
 
 static void
 gnc_search_int64_init (GNCSearchInt64 *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->how = COMPARE_EQUAL;
 }
 
@@ -110,8 +115,6 @@
   GNCSearchInt64 *o = (GNCSearchInt64 *)obj;
   g_assert (IS_GNCSEARCH_INT64 (o));
 
-  g_free(o->priv);
-	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -125,7 +128,7 @@
 GNCSearchInt64 *
 gnc_search_int64_new (void)
 {
-  GNCSearchInt64 *o = g_object_new(gnc_search_int64_get_type (), NULL);
+  GNCSearchInt64 *o = g_object_new(GNC_TYPE_SEARCH_INT64, NULL);
   return o;
 }
 
@@ -223,24 +226,28 @@
 grab_focus (GNCSearchCoreType *fe)
 {
   GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
+  GNCSearchInt64Private *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
 
-  if (fi->priv->entry)
-    gtk_widget_grab_focus (fi->priv->entry);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_widget_grab_focus (priv->entry);
 }
 
 static void
 editable_enters (GNCSearchCoreType *fe)
 {
   GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
+  GNCSearchInt64Private *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_INT64 (fi));
 
-  if (fi->priv->entry)
-    gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
 }
 
 static GtkWidget *
@@ -248,10 +255,12 @@
 {
   GtkWidget *entry, *menu, *box;
   GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
+  GNCSearchInt64Private *priv;
 	
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL);
 
+  priv = _PRIVATE(fi);
   box = gtk_hbox_new (FALSE, 3);
 
   /* Build and connect the option menu */
@@ -268,8 +277,8 @@
   }
   g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe);
   gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
-  fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
-  fi->priv->gae = GNC_AMOUNT_EDIT (entry);
+  priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
+  priv->gae = GNC_AMOUNT_EDIT (entry);
 
   /* And return the box */
   return box;
@@ -278,12 +287,14 @@
 static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
 {
   GNCSearchInt64 *fi = (GNCSearchInt64 *)fe;
+  GNCSearchInt64Private *priv;
 
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_INT64 (fi), NULL);
 
   /* force the computation of the entry, because we may not get the signal */
-  entry_changed (fi->priv->gae, fi);
+  priv = _PRIVATE(fi);
+  entry_changed (priv->gae, fi);
 
   return gncQueryInt64Predicate (fi->how, fi->value);
 }

Modified: gnucash/trunk/src/gnome-search/search-int64.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-int64.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-int64.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -24,16 +24,16 @@
 #include "search-core-type.h"
 #include "QueryNew.h"
 
-#define GNCSEARCH_INT64(obj)	GTK_CHECK_CAST (obj, gnc_search_int64_get_type (), GNCSearchInt64)
-#define GNCSEARCH_INT64_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_int64_get_type (), GNCSearchInt64Class)
-#define IS_GNCSEARCH_INT64(obj)      GTK_CHECK_TYPE (obj, gnc_search_int64_get_type ())
+#define GNC_TYPE_SEARCH_INT64		(gnc_search_int64_get_type ())
+#define GNCSEARCH_INT64(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_INT64, GNCSearchInt64)
+#define GNCSEARCH_INT64_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_INT64, GNCSearchInt64Class)
+#define IS_GNCSEARCH_INT64(obj)		GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_INT64)
 
 typedef struct _GNCSearchInt64	GNCSearchInt64;
 typedef struct _GNCSearchInt64Class	GNCSearchInt64Class;
 
 struct _GNCSearchInt64 {
   GNCSearchCoreType parent;
-  struct _GNCSearchInt64Private *priv;
 
   query_compare_t	how;
   gint64		value;

Modified: gnucash/trunk/src/gnome-search/search-numeric.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-numeric.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-numeric.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -42,7 +42,7 @@
 static void gnc_search_numeric_init	(GNCSearchNumeric *gspaper);
 static void gnc_search_numeric_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchNumeric *)(x))->priv)
+typedef struct _GNCSearchNumericPrivate GNCSearchNumericPrivate;
 
 struct _GNCSearchNumericPrivate {
   gboolean	is_debcred;
@@ -50,6 +50,9 @@
   GNCAmountEdit *gae;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericPrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -96,12 +99,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchNumericPrivate));
 }
 
 static void
 gnc_search_numeric_init (GNCSearchNumeric *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->value = gnc_numeric_zero ();
   o->how = COMPARE_EQUAL;
   o->option = NUMERIC_MATCH_ANY;
@@ -113,8 +117,6 @@
   GNCSearchNumeric *o = (GNCSearchNumeric *)obj;
   g_assert (IS_GNCSEARCH_NUMERIC (o));
 
-  g_free(o->priv);
-	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -128,7 +130,7 @@
 GNCSearchNumeric *
 gnc_search_numeric_new (void)
 {
-  GNCSearchNumeric *o = g_object_new(gnc_search_numeric_get_type (), NULL);
+  GNCSearchNumeric *o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL);
   return o;
 }
 
@@ -142,8 +144,12 @@
 GNCSearchNumeric *
 gnc_search_numeric_debcred_new (void)
 {
-  GNCSearchNumeric *o = g_object_new(gnc_search_numeric_get_type (), NULL);
-  o->priv->is_debcred = TRUE;
+  GNCSearchNumeric *o;
+  GNCSearchNumericPrivate *priv;
+
+  o = g_object_new(GNC_TYPE_SEARCH_NUMERIC, NULL);
+  priv = _PRIVATE(o);
+  priv->is_debcred = TRUE;
   return o;
 }
 
@@ -228,29 +234,31 @@
 make_how_menu (GNCSearchCoreType *fe)
 {
   GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
+  GNCSearchNumericPrivate *priv;
   GtkWidget *menu, *item, *first = NULL, *opmenu;
   int current = 0, index = 0;
 
   menu = gtk_menu_new ();
 
-  ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
+  priv = _PRIVATE(fi);
+  ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
 			   _("less than") : _("is less than")),
 		 COMPARE_LT, G_CALLBACK (how_option_changed));
   first = item;			/* Force one */
-  ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
+  ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
 			   _("less than or equal to") :
 			   _("is less than or equal to")),
 		 COMPARE_LTE, G_CALLBACK (how_option_changed));
-  ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
+  ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
 			   _("equal to") : _("equals")),
 		 COMPARE_EQUAL, G_CALLBACK (how_option_changed));
-  ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
+  ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
 			   _("not equal to") : _("does not equal")),
 		 COMPARE_NEQ, G_CALLBACK (how_option_changed));
-  ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
+  ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
 			   _("greater than") : _("is greater than")),
 		 COMPARE_GT, G_CALLBACK (how_option_changed));
-  ADD_MENU_ITEM (fi->how, (fi->priv->is_debcred ?
+  ADD_MENU_ITEM (fi->how, (priv->is_debcred ?
 			   _("greater than or equal to") :
 			   _("is greater than or equal to")),
 		 COMPARE_GTE, G_CALLBACK (how_option_changed));
@@ -294,24 +302,28 @@
 grab_focus (GNCSearchCoreType *fe)
 {
   GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
+  GNCSearchNumericPrivate *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
 
-  if (fi->priv->entry)
-    gtk_widget_grab_focus (fi->priv->entry);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_widget_grab_focus (priv->entry);
 }
 
 static void
 editable_enters (GNCSearchCoreType *fe)
 {
   GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
+  GNCSearchNumericPrivate *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_NUMERIC (fi));
 
-  if (fi->priv->entry)
-    gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
 }
 
 static GtkWidget *
@@ -319,14 +331,16 @@
 {
   GtkWidget *entry, *menu, *box;
   GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
-	
+  GNCSearchNumericPrivate *priv;
+
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), NULL);
 
+  priv = _PRIVATE(fi);
   box = gtk_hbox_new (FALSE, 3);
 
   /* Build and connect the option menu(s) */
-  if (fi->priv->is_debcred) {
+  if (priv->is_debcred) {
     menu = make_option_menu (fe);
     gtk_box_pack_start (GTK_BOX (box), menu, FALSE, FALSE, 3);
   }
@@ -339,8 +353,8 @@
   gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (entry), fi->value);
   g_signal_connect (G_OBJECT (entry), "amount_changed", G_CALLBACK (entry_changed), fe);
   gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
-  fi->priv->gae = GNC_AMOUNT_EDIT (entry);
-  fi->priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
+  priv->gae = GNC_AMOUNT_EDIT (entry);
+  priv->entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (entry));
 
   /* And return the box */
   return box;
@@ -349,12 +363,14 @@
 static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe)
 {
   GNCSearchNumeric *fi = (GNCSearchNumeric *)fe;
+  GNCSearchNumericPrivate *priv;
 
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fi), NULL);
 
   /* force the computation of the entry, because we may not get the signal */
-  entry_changed (fi->priv->gae, fi);
+  priv = _PRIVATE(fi);
+  entry_changed (priv->gae, fi);
 
   return gncQueryNumericPredicate (fi->how, fi->option, fi->value);
 }
@@ -362,15 +378,18 @@
 static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe)
 {
   GNCSearchNumeric *se, *fse = (GNCSearchNumeric *)fe;
+  GNCSearchNumericPrivate *se_priv, *fse_priv;
 
   g_return_val_if_fail (fse, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_NUMERIC (fse), NULL);
+  fse_priv = _PRIVATE(fse);
 
   se = gnc_search_numeric_new ();
   gnc_search_numeric_set_value (se, fse->value);
   gnc_search_numeric_set_how (se, fse->how);
+  se_priv = _PRIVATE(se);
   gnc_search_numeric_set_option (se, fse->option);
-  se->priv->is_debcred = fse->priv->is_debcred;
+  se_priv->is_debcred = fse_priv->is_debcred;
 
   return (GNCSearchCoreType *)se;
 }

Modified: gnucash/trunk/src/gnome-search/search-numeric.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-numeric.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-numeric.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -25,9 +25,10 @@
 #include "gnc-numeric.h"
 #include "QueryNew.h"
 
-#define GNCSEARCH_NUMERIC(obj)	GTK_CHECK_CAST (obj, gnc_search_numeric_get_type (), GNCSearchNumeric)
-#define GNCSEARCH_NUMERIC_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_numeric_get_type (), GNCSearchNumericClass)
-#define IS_GNCSEARCH_NUMERIC(obj)      GTK_CHECK_TYPE (obj, gnc_search_numeric_get_type ())
+#define GNC_TYPE_SEARCH_NUMERIC		(gnc_search_numeric_get_type ())
+#define GNCSEARCH_NUMERIC(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumeric)
+#define GNCSEARCH_NUMERIC_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_NUMERIC, GNCSearchNumericClass)
+#define IS_GNCSEARCH_NUMERIC(obj)	GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_NUMERIC)
 
 typedef struct _GNCSearchNumeric	GNCSearchNumeric;
 typedef struct _GNCSearchNumericClass	GNCSearchNumericClass;

Modified: gnucash/trunk/src/gnome-search/search-reconciled.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-reconciled.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-reconciled.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -40,11 +40,15 @@
 static void gnc_search_reconciled_init	(GNCSearchReconciled *gspaper);
 static void gnc_search_reconciled_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchReconciled *)(x))->priv)
+typedef struct _GNCSearchReconciledPrivate GNCSearchReconciledPrivate;
 
 struct _GNCSearchReconciledPrivate {
+  gpointer dummy;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledPrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -89,12 +93,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchReconciledPrivate));
 }
 
 static void
 gnc_search_reconciled_init (GNCSearchReconciled *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->how = COMPARE_EQUAL;
   o->value = CLEARED_NO;
 }
@@ -105,8 +110,6 @@
   GNCSearchReconciled *o = (GNCSearchReconciled *)obj;
   g_assert (IS_GNCSEARCH_RECONCILED (o));
 
-  g_free(o->priv);
-	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
 
@@ -120,7 +123,7 @@
 GNCSearchReconciled *
 gnc_search_reconciled_new (void)
 {
-  GNCSearchReconciled *o = g_object_new(gnc_search_reconciled_get_type (), NULL);
+  GNCSearchReconciled *o = g_object_new(GNC_TYPE_SEARCH_RECONCILED, NULL);
   return o;
 }
 

Modified: gnucash/trunk/src/gnome-search/search-reconciled.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-reconciled.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-reconciled.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -24,16 +24,16 @@
 #include "search-core-type.h"
 #include "Query.h"		/* for cleared_match_t */
 
-#define GNCSEARCH_RECONCILED(obj)	GTK_CHECK_CAST (obj, gnc_search_reconciled_get_type (), GNCSearchReconciled)
-#define GNCSEARCH_RECONCILED_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_reconciled_get_type (), GNCSearchReconciledClass)
-#define IS_GNCSEARCH_RECONCILED(obj)      GTK_CHECK_TYPE (obj, gnc_search_reconciled_get_type ())
+#define GNC_TYPE_SEARCH_RECONCILED	  (gnc_search_reconciled_get_type ())
+#define GNCSEARCH_RECONCILED(obj)	  GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciled)
+#define GNCSEARCH_RECONCILED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_RECONCILED, GNCSearchReconciledClass)
+#define IS_GNCSEARCH_RECONCILED(obj)      GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_RECONCILED)
 
 typedef struct _GNCSearchReconciled	GNCSearchReconciled;
 typedef struct _GNCSearchReconciledClass	GNCSearchReconciledClass;
 
 struct _GNCSearchReconciled {
   GNCSearchCoreType parent;
-  struct _GNCSearchReconciledPrivate *priv;
 
   char_match_t		how;
   cleared_match_t	value;

Modified: gnucash/trunk/src/gnome-search/search-string.c
===================================================================
--- gnucash/trunk/src/gnome-search/search-string.c	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-string.c	2005-11-06 02:47:18 UTC (rev 11848)
@@ -43,12 +43,15 @@
 static void gnc_search_string_init	(GNCSearchString *gspaper);
 static void gnc_search_string_finalize	(GObject *obj);
 
-#define _PRIVATE(x) (((GNCSearchString *)(x))->priv)
+typedef struct _GNCSearchStringPrivate GNCSearchStringPrivate;
 
 struct _GNCSearchStringPrivate {
   GtkWidget *entry;
 };
 
+#define _PRIVATE(o) \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNC_TYPE_SEARCH_STRING, GNCSearchStringPrivate))
+
 static GNCSearchCoreTypeClass *parent_class;
 
 guint
@@ -95,12 +98,13 @@
   gnc_search_core_type->get_widget = gncs_get_widget;
   gnc_search_core_type->get_predicate = gncs_get_predicate;
   gnc_search_core_type->clone = gncs_clone;
+
+  g_type_class_add_private(class, sizeof(GNCSearchStringPrivate));
 }
 
 static void
 gnc_search_string_init (GNCSearchString *o)
 {
-  o->priv = g_malloc0 (sizeof (*o->priv));
   o->value = NULL;
   o->how = SEARCH_STRING_CONTAINS;
   o->ign_case = TRUE;
@@ -113,7 +117,6 @@
   g_assert (IS_GNCSEARCH_STRING (o));
 
   g_free (o->value);
-  g_free(o->priv);
 	
   G_OBJECT_CLASS (parent_class)->finalize(obj);
 }
@@ -128,7 +131,7 @@
 GNCSearchString *
 gnc_search_string_new (void)
 {
-  GNCSearchString *o = g_object_new(gnc_search_string_get_type (), NULL);
+  GNCSearchString *o = g_object_new(GNC_TYPE_SEARCH_STRING, NULL);
   return o;
 }
 
@@ -295,24 +298,28 @@
 grab_focus (GNCSearchCoreType *fe)
 {
   GNCSearchString *fi = (GNCSearchString *)fe;
+  GNCSearchStringPrivate *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_STRING (fi));
 
-  if (fi->priv->entry)
-    gtk_widget_grab_focus (fi->priv->entry);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_widget_grab_focus (priv->entry);
 }
 
 static void
 editable_enters (GNCSearchCoreType *fe)
 {
   GNCSearchString *fi = (GNCSearchString *)fe;
+  GNCSearchStringPrivate *priv;
 
   g_return_if_fail (fi);
   g_return_if_fail (IS_GNCSEARCH_STRING (fi));
 
-  if (fi->priv->entry)
-    gtk_entry_set_activates_default(GTK_ENTRY (fi->priv->entry), TRUE);
+  priv = _PRIVATE(fi);
+  if (priv->entry)
+    gtk_entry_set_activates_default(GTK_ENTRY (priv->entry), TRUE);
 }
 
 static GtkWidget *
@@ -320,10 +327,12 @@
 {
   GtkWidget *entry, *toggle, *menu, *box;
   GNCSearchString *fi = (GNCSearchString *)fe;
+  GNCSearchStringPrivate *priv;
 	
   g_return_val_if_fail (fi, NULL);
   g_return_val_if_fail (IS_GNCSEARCH_STRING (fi), NULL);
 
+  priv = _PRIVATE(fi);
   box = gtk_hbox_new (FALSE, 3);
 
   /* Build and connect the option menu */
@@ -336,7 +345,7 @@
     gtk_entry_set_text (GTK_ENTRY (entry), fi->value);
   g_signal_connect (G_OBJECT (entry), "changed", G_CALLBACK (entry_changed), fe);
   gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 3);
-  fi->priv->entry = entry;
+  priv->entry = entry;
 
   /* Build and connect the toggle button */
   toggle = gtk_toggle_button_new_with_label (_("Case Insensitive?"));

Modified: gnucash/trunk/src/gnome-search/search-string.h
===================================================================
--- gnucash/trunk/src/gnome-search/search-string.h	2005-11-06 00:14:40 UTC (rev 11847)
+++ gnucash/trunk/src/gnome-search/search-string.h	2005-11-06 02:47:18 UTC (rev 11848)
@@ -23,9 +23,10 @@
 
 #include "search-core-type.h"
 
-#define GNCSEARCH_STRING(obj)	GTK_CHECK_CAST (obj, gnc_search_string_get_type (), GNCSearchString)
-#define GNCSEARCH_STRING_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, gnc_search_string_get_type (), GNCSearchStringClass)
-#define IS_GNCSEARCH_STRING(obj)      GTK_CHECK_TYPE (obj, gnc_search_string_get_type ())
+#define GNC_TYPE_SEARCH_STRING		(gnc_search_string_get_type ())
+#define GNCSEARCH_STRING(obj)		GTK_CHECK_CAST (obj, GNC_TYPE_SEARCH_STRING, GNCSearchString)
+#define GNCSEARCH_STRING_CLASS(klass)	GTK_CHECK_CLASS_CAST (klass, GNC_TYPE_SEARCH_STRING, GNCSearchStringClass)
+#define IS_GNCSEARCH_STRING(obj)	GTK_CHECK_TYPE (obj, GNC_TYPE_SEARCH_STRING)
 
 typedef struct _GNCSearchString	GNCSearchString;
 typedef struct _GNCSearchStringClass	GNCSearchStringClass;
@@ -39,7 +40,6 @@
 
 struct _GNCSearchString {
   GNCSearchCoreType parent;
-  struct _GNCSearchStringPrivate *priv;
 
   GNCSearchString_Type	how;
   gboolean		ign_case;



More information about the gnucash-changes mailing list