Allocation size varies by CamelStoreSummary subclass, not by instance.
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;
static void
camel_imapx_store_summary_init (CamelIMAPXStoreSummary *s)
{
- ((CamelStoreSummary *) s)->store_info_size = sizeof (CamelIMAPXStoreInfo);
s->version = CAMEL_IMAPX_STORE_SUMMARY_VERSION;
}
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
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;
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;
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;
CamelObject parent;
CamelStoreSummaryPrivate *priv;
- /* sizes of memory objects */
- guint32 store_info_size;
-
GPtrArray *folders; /* CamelStoreInfo's */
GHashTable *folders_path; /* CamelStoreInfo's by path name */
};
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);
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;
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 (