[evolution-data-server] CamelStoreSummary: Move 'store_info_size' to class struct.



commit 8e098ab5185d611d7e6efa52d1440216058d88b7
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Sep 16 12:17:58 2013 -0400

    CamelStoreSummary: Move 'store_info_size' to class struct.
    
    Allocation size varies by CamelStoreSummary subclass, not by instance.

 camel/camel-imapx-store-summary.c               |    2 +-
 camel/camel-store-summary.c                     |   14 +++++++++++---
 camel/camel-store-summary.h                     |    6 +++---
 camel/providers/nntp/camel-nntp-store-summary.c |    6 +-----
 4 files changed, 16 insertions(+), 12 deletions(-)
---
diff --git a/camel/camel-imapx-store-summary.c b/camel/camel-imapx-store-summary.c
index e02811b..81cdd17 100644
--- a/camel/camel-imapx-store-summary.c
+++ b/camel/camel-imapx-store-summary.c
@@ -347,6 +347,7 @@ camel_imapx_store_summary_class_init (CamelIMAPXStoreSummaryClass *class)
        object_class->finalize = imapx_store_summary_finalize;
 
        store_summary_class = CAMEL_STORE_SUMMARY_CLASS (class);
+       store_summary_class->store_info_size = sizeof (CamelIMAPXStoreInfo);
        store_summary_class->summary_header_load =imapx_store_summary_summary_header_load;
        store_summary_class->summary_header_save = imapx_store_summary_summary_header_save;
        store_summary_class->store_info_load = imapx_store_summary_store_info_load;
@@ -357,7 +358,6 @@ camel_imapx_store_summary_class_init (CamelIMAPXStoreSummaryClass *class)
 static void
 camel_imapx_store_summary_init (CamelIMAPXStoreSummary *s)
 {
-       ((CamelStoreSummary *) s)->store_info_size = sizeof (CamelIMAPXStoreInfo);
        s->version = CAMEL_IMAPX_STORE_SUMMARY_VERSION;
 }
 
diff --git a/camel/camel-store-summary.c b/camel/camel-store-summary.c
index 4d9f22a..bc57184 100644
--- a/camel/camel-store-summary.c
+++ b/camel/camel-store-summary.c
@@ -228,8 +228,12 @@ static void
 store_summary_store_info_free (CamelStoreSummary *summary,
                                CamelStoreInfo *info)
 {
+       CamelStoreSummaryClass *class;
+
+       class = CAMEL_STORE_SUMMARY_GET_CLASS (summary);
+
        g_free (info->path);
-       g_slice_free1 (summary->store_info_size, info);
+       g_slice_free1 (class->store_info_size, info);
 }
 
 static void
@@ -260,6 +264,7 @@ camel_store_summary_class_init (CamelStoreSummaryClass *class)
        object_class->dispose = store_summary_dispose;
        object_class->finalize = store_summary_finalize;
 
+       class->store_info_size = sizeof (CamelStoreInfo);
        class->summary_header_load = store_summary_summary_header_load;
        class->summary_header_save = store_summary_summary_header_save;
        class->store_info_new  = store_summary_store_info_new;
@@ -273,7 +278,6 @@ static void
 camel_store_summary_init (CamelStoreSummary *summary)
 {
        summary->priv = CAMEL_STORE_SUMMARY_GET_PRIVATE (summary);
-       summary->store_info_size = sizeof (CamelStoreInfo);
 
        summary->priv->version = CAMEL_STORE_SUMMARY_VERSION;
 
@@ -780,11 +784,15 @@ camel_store_summary_remove_path (CamelStoreSummary *summary,
 CamelStoreInfo *
 camel_store_summary_info_new (CamelStoreSummary *summary)
 {
+       CamelStoreSummaryClass *class;
        CamelStoreInfo *info;
 
        g_return_val_if_fail (CAMEL_IS_STORE_SUMMARY (summary), NULL);
 
-       info = g_slice_alloc0 (summary->store_info_size);
+       class = CAMEL_STORE_SUMMARY_GET_CLASS (summary);
+       g_return_val_if_fail (class->store_info_size > 0, NULL);
+
+       info = g_slice_alloc0 (class->store_info_size);
        info->refcount = 1;
 
        return info;
diff --git a/camel/camel-store-summary.h b/camel/camel-store-summary.h
index 666dcbf..4cabcfa 100644
--- a/camel/camel-store-summary.h
+++ b/camel/camel-store-summary.h
@@ -80,9 +80,6 @@ struct _CamelStoreSummary {
        CamelObject parent;
        CamelStoreSummaryPrivate *priv;
 
-       /* sizes of memory objects */
-       guint32 store_info_size;
-
        GPtrArray *folders;     /* CamelStoreInfo's */
        GHashTable *folders_path; /* CamelStoreInfo's by path name */
 };
@@ -90,6 +87,9 @@ struct _CamelStoreSummary {
 struct _CamelStoreSummaryClass {
        CamelObjectClass parent_class;
 
+       /* size of memory objects */
+       gsize store_info_size;
+
        /* load/save the global info */
        gint            (*summary_header_load)  (CamelStoreSummary *summary,
                                                 FILE *file);
diff --git a/camel/providers/nntp/camel-nntp-store-summary.c b/camel/providers/nntp/camel-nntp-store-summary.c
index a04291f..4f618bd 100644
--- a/camel/providers/nntp/camel-nntp-store-summary.c
+++ b/camel/providers/nntp/camel-nntp-store-summary.c
@@ -55,6 +55,7 @@ camel_nntp_store_summary_class_init (CamelNNTPStoreSummaryClass *class)
        CamelStoreSummaryClass *store_summary_class;
 
        store_summary_class = CAMEL_STORE_SUMMARY_CLASS (class);
+       store_summary_class->store_info_size = sizeof (CamelNNTPStoreInfo);
        store_summary_class->summary_header_load = summary_header_load;
        store_summary_class->summary_header_save = summary_header_save;
        store_summary_class->store_info_load = store_info_load;
@@ -66,11 +67,6 @@ camel_nntp_store_summary_class_init (CamelNNTPStoreSummaryClass *class)
 static void
 camel_nntp_store_summary_init (CamelNNTPStoreSummary *nntp_store_summary)
 {
-       CamelStoreSummary *store_summary;
-
-       store_summary = CAMEL_STORE_SUMMARY (nntp_store_summary);
-       store_summary->store_info_size = sizeof (CamelNNTPStoreInfo);
-
        nntp_store_summary->version = CAMEL_NNTP_STORE_SUMMARY_VERSION;
 
        memset (


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]