[evolution-data-server] CamelStoreSummary: Move 'store_info_size' to class struct.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] CamelStoreSummary: Move 'store_info_size' to class struct.
- Date: Mon, 23 Sep 2013 16:06:03 +0000 (UTC)
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]