From 087de2b80ac1c9e095de5b6b60cdc73595538788 Mon Sep 17 00:00:00 2001 From: David Hampton Date: Sun, 6 Nov 2005 02:47:18 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@11848 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome-search/gnc-general-search.c | 82 +++++++++++++++------------ src/gnome-search/gnc-general-search.h | 10 ++-- src/gnome-search/search-account.c | 56 ++++++++++++------ src/gnome-search/search-account.h | 8 +-- src/gnome-search/search-boolean.c | 13 +++-- src/gnome-search/search-boolean.h | 8 +-- src/gnome-search/search-core-type.c | 12 +++- src/gnome-search/search-core-type.h | 3 +- src/gnome-search/search-date.c | 46 +++++++++------ src/gnome-search/search-date.h | 8 +-- src/gnome-search/search-double.c | 34 +++++++---- src/gnome-search/search-double.h | 8 +-- src/gnome-search/search-int64.c | 35 ++++++++---- src/gnome-search/search-int64.h | 8 +-- src/gnome-search/search-numeric.c | 65 +++++++++++++-------- src/gnome-search/search-numeric.h | 7 ++- src/gnome-search/search-reconciled.c | 13 +++-- src/gnome-search/search-reconciled.h | 8 +-- src/gnome-search/search-string.c | 27 ++++++--- src/gnome-search/search-string.h | 8 +-- 20 files changed, 284 insertions(+), 175 deletions(-) diff --git a/src/gnome-search/gnc-general-search.c b/src/gnome-search/gnc-general-search.c index b3d7a7804f..5e7b555647 100644 --- a/src/gnome-search/gnc-general-search.c +++ b/src/gnome-search/gnc-general-search.c @@ -54,7 +54,7 @@ static void gnc_general_search_init (GNCGeneralSearch *gsl); 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 @@ struct _GNCGeneralSearchPrivate { 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 @@ gnc_general_search_class_init (GNCGeneralSearchClass *klass) 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 @@ static void 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 @@ gnc_general_search_destroy (GtkObject *object) 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 @@ gnc_general_search_destroy (GtkObject *object) 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 @@ static void 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 @@ static int 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 @@ static void 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 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label, 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 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label, 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 @@ gnc_general_search_new (GNCIdTypeConst type, const char *label, 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 @@ gnc_general_search_set_selected (GNCGeneralSearch *gsl, gpointer selection) 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 (); } /** diff --git a/src/gnome-search/gnc-general-search.h b/src/gnome-search/gnc-general-search.h index a146ed01be..b99524b416 100644 --- a/src/gnome-search/gnc-general-search.h +++ b/src/gnome-search/gnc-general-search.h @@ -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 GNCSearchWindow *(*GNCSearchCB) (gpointer start, gpointer user_data); typedef struct { GtkHBox hbox; - struct _GNCGeneralSearchPrivate *priv; GtkWidget * entry; /* display of selection name */ GtkWidget * button; /* button for popping up search window */ diff --git a/src/gnome-search/search-account.c b/src/gnome-search/search-account.c index f6ebac5d50..3def93776c 100644 --- a/src/gnome-search/search-account.c +++ b/src/gnome-search/search-account.c @@ -42,13 +42,16 @@ static void gnc_search_account_class_init (GNCSearchAccountClass *class); 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_account_class_init (GNCSearchAccountClass *class) 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 @@ gnc_search_account_finalize (GObject *obj) 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 @@ gnc_search_account_finalize (GObject *obj) 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 @@ gnc_search_account_new (void) 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 @@ static gboolean 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 @@ static GtkWidget * 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 @@ make_menu (GNCSearchCoreType *fe) 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 @@ describe_button (GNCSearchAccount *fi) static void button_clicked (GtkButton *button, GNCSearchAccount *fi) { + GNCSearchAccountPrivate *priv; GtkDialog *dialog; GtkWidget *account_tree; GtkWidget *accounts_scroller; @@ -240,9 +254,10 @@ button_clicked (GtkButton *button, GNCSearchAccount *fi) 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 @@ button_clicked (GtkButton *button, GNCSearchAccount *fi) /* 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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 QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) 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; } diff --git a/src/gnome-search/search-account.h b/src/gnome-search/search-account.h index 73ad5452cb..7c29fb5250 100644 --- a/src/gnome-search/search-account.h +++ b/src/gnome-search/search-account.h @@ -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; }; diff --git a/src/gnome-search/search-boolean.c b/src/gnome-search/search-boolean.c index 93510d3110..2ab2e516e6 100644 --- a/src/gnome-search/search-boolean.c +++ b/src/gnome-search/search-boolean.c @@ -39,11 +39,15 @@ static void gnc_search_boolean_class_init (GNCSearchBooleanClass *class); 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_boolean_class_init (GNCSearchBooleanClass *class) 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 @@ gnc_search_boolean_finalize (GObject *obj) 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 @@ gnc_search_boolean_finalize (GObject *obj) 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; } diff --git a/src/gnome-search/search-boolean.h b/src/gnome-search/search-boolean.h index 423b114da2..4c8dd1403c 100644 --- a/src/gnome-search/search-boolean.h +++ b/src/gnome-search/search-boolean.h @@ -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; diff --git a/src/gnome-search/search-core-type.c b/src/gnome-search/search-core-type.c index 3bf3af61f8..cad2d0661f 100644 --- a/src/gnome-search/search-core-type.c +++ b/src/gnome-search/search-core-type.c @@ -48,10 +48,15 @@ static void gnc_search_core_type_class_init (GNCSearchCoreTypeClass *class); 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 @@ gnc_search_core_type_class_init (GNCSearchCoreTypeClass *klass) 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); } diff --git a/src/gnome-search/search-core-type.h b/src/gnome-search/search-core-type.h index 1dd3e608a6..74725b9333 100644 --- a/src/gnome-search/search-core-type.h +++ b/src/gnome-search/search-core-type.h @@ -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; diff --git a/src/gnome-search/search-date.c b/src/gnome-search/search-date.c index 90fb474c35..4833ffe178 100644 --- a/src/gnome-search/search-date.c +++ b/src/gnome-search/search-date.c @@ -43,12 +43,15 @@ static void gnc_search_date_class_init (GNCSearchDateClass *class); 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_date_class_init (GNCSearchDateClass *class) 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 @@ gnc_search_date_init (GNCSearchDate *o) 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)); + + o = GNCSEARCH_DATE(obj); + priv = _PRIVATE(o); + if (priv->entry) + gtk_widget_destroy (priv->entry); - g_free(o->priv); - G_OBJECT_CLASS (parent_class)->finalize(obj); } @@ -129,7 +135,7 @@ gnc_search_date_finalize (GObject *obj) 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 @@ static void 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 @@ gncs_get_widget (GNCSearchCoreType *fe) { 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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); } diff --git a/src/gnome-search/search-date.h b/src/gnome-search/search-date.h index e5ec8bb1be..dd8851ac65 100644 --- a/src/gnome-search/search-date.h +++ b/src/gnome-search/search-date.h @@ -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; diff --git a/src/gnome-search/search-double.c b/src/gnome-search/search-double.c index 465031d71e..f139ed41b2 100644 --- a/src/gnome-search/search-double.c +++ b/src/gnome-search/search-double.c @@ -42,13 +42,16 @@ static void gnc_search_double_class_init (GNCSearchDoubleClass *class); 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_double_class_init (GNCSearchDoubleClass *class) 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 @@ gnc_search_double_finalize (GObject *obj) 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 @@ gnc_search_double_finalize (GObject *obj) 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 @@ static void 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 @@ gncs_get_widget (GNCSearchCoreType *fe) { 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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); } diff --git a/src/gnome-search/search-double.h b/src/gnome-search/search-double.h index 502255c1d0..c351e86ca1 100644 --- a/src/gnome-search/search-double.h +++ b/src/gnome-search/search-double.h @@ -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; diff --git a/src/gnome-search/search-int64.c b/src/gnome-search/search-int64.c index 9a25f0879c..d0c933e9f7 100644 --- a/src/gnome-search/search-int64.c +++ b/src/gnome-search/search-int64.c @@ -42,13 +42,17 @@ static void gnc_search_int64_class_init (GNCSearchInt64Class *class); 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_int64_class_init (GNCSearchInt64Class *class) 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 @@ gnc_search_int64_finalize (GObject *obj) 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 @@ gnc_search_int64_finalize (GObject *obj) 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 @@ static void 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 @@ gncs_get_widget (GNCSearchCoreType *fe) { 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 @@ gncs_get_widget (GNCSearchCoreType *fe) } 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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); } diff --git a/src/gnome-search/search-int64.h b/src/gnome-search/search-int64.h index 3163005312..9bb455d2dc 100644 --- a/src/gnome-search/search-int64.h +++ b/src/gnome-search/search-int64.h @@ -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; diff --git a/src/gnome-search/search-numeric.c b/src/gnome-search/search-numeric.c index 38b8bb2dfa..90ee33c9d1 100644 --- a/src/gnome-search/search-numeric.c +++ b/src/gnome-search/search-numeric.c @@ -42,7 +42,7 @@ static void gnc_search_numeric_class_init (GNCSearchNumericClass *class); 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 @@ struct _GNCSearchNumericPrivate { 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_numeric_class_init (GNCSearchNumericClass *class) 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 @@ gnc_search_numeric_finalize (GObject *obj) 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 @@ gnc_search_numeric_finalize (GObject *obj) 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 @@ gnc_search_numeric_new (void) 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 @@ static GtkWidget * 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 @@ static void 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 @@ gncs_get_widget (GNCSearchCoreType *fe) { 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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 QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) 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; } diff --git a/src/gnome-search/search-numeric.h b/src/gnome-search/search-numeric.h index d54802eb74..4950f815ac 100644 --- a/src/gnome-search/search-numeric.h +++ b/src/gnome-search/search-numeric.h @@ -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; diff --git a/src/gnome-search/search-reconciled.c b/src/gnome-search/search-reconciled.c index f4fc52dc31..1419ee82bf 100644 --- a/src/gnome-search/search-reconciled.c +++ b/src/gnome-search/search-reconciled.c @@ -40,11 +40,15 @@ static void gnc_search_reconciled_class_init (GNCSearchReconciledClass *class); 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_reconciled_class_init (GNCSearchReconciledClass *class) 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 @@ gnc_search_reconciled_finalize (GObject *obj) 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 @@ gnc_search_reconciled_finalize (GObject *obj) 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; } diff --git a/src/gnome-search/search-reconciled.h b/src/gnome-search/search-reconciled.h index d854c2c9e7..64338e0219 100644 --- a/src/gnome-search/search-reconciled.h +++ b/src/gnome-search/search-reconciled.h @@ -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; diff --git a/src/gnome-search/search-string.c b/src/gnome-search/search-string.c index 9811947c1b..d7eae139b6 100644 --- a/src/gnome-search/search-string.c +++ b/src/gnome-search/search-string.c @@ -43,12 +43,15 @@ static void gnc_search_string_class_init (GNCSearchStringClass *class); 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_string_class_init (GNCSearchStringClass *class) 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 @@ gnc_search_string_finalize (GObject *obj) 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 @@ gnc_search_string_finalize (GObject *obj) 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 @@ static void 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 @@ gncs_get_widget (GNCSearchCoreType *fe) { 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 @@ gncs_get_widget (GNCSearchCoreType *fe) 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?")); diff --git a/src/gnome-search/search-string.h b/src/gnome-search/search-string.h index c48ce31e44..1293231a78 100644 --- a/src/gnome-search/search-string.h +++ b/src/gnome-search/search-string.h @@ -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 @@ typedef enum _search_string_how { struct _GNCSearchString { GNCSearchCoreType parent; - struct _GNCSearchStringPrivate *priv; GNCSearchString_Type how; gboolean ign_case;