priv->name = g_strdup (camel_name);
}
- camel_object_unref (CAMEL_OBJECT (addr));
+ g_object_unref (addr);
}
}
priv->email = g_strdup (camel_email);
}
- camel_object_unref (CAMEL_OBJECT (addr));
+ g_object_unref (addr);
}
/* Force e-mail to be non-null... */
priv->addr = camel_address_encode (CAMEL_ADDRESS (addr));
}
- camel_object_unref (CAMEL_OBJECT (addr));
+ g_object_unref (addr);
}
return priv->addr;
camel_internet_address_add (addr, name, email);
g_free (dest->priv->textrep);
dest->priv->textrep = camel_address_format (CAMEL_ADDRESS (addr));
- camel_object_unref (CAMEL_OBJECT (addr));
+ g_object_unref (addr);
}
if (dest->priv->textrep != NULL)
camel-net-utils.c \
camel-nntp-address.c \
camel-object.c \
+ camel-object-bag.c \
camel-operation.c \
camel-partition-table.c \
camel-seekable-stream.c \
camel-net-utils.h \
camel-nntp-address.h \
camel-object.h \
+ camel-object-bag.h \
camel-operation.h \
camel-partition-table.h \
camel-search-private.h \
#include "camel-address.h"
-static CamelObjectClass *camel_address_parent;
+G_DEFINE_TYPE (CamelAddress, camel_address, CAMEL_TYPE_OBJECT)
static void
-camel_address_finalize (CamelObject *object)
+address_finalize (GObject *object)
{
CamelAddress *address = CAMEL_ADDRESS (object);
camel_address_remove (address, -1);
g_ptr_array_free (address->addresses, TRUE);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_address_parent_class)->finalize (object);
}
static void
-camel_address_class_init (CamelAddressClass *klass)
+camel_address_class_init (CamelAddressClass *class)
{
- camel_address_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = address_finalize;
}
static void
address->addresses = g_ptr_array_new();
}
-CamelType
-camel_address_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelAddress",
- sizeof (CamelAddress),
- sizeof (CamelAddressClass),
- (CamelObjectClassInitFunc) camel_address_class_init,
- NULL,
- (CamelObjectInitFunc) camel_address_init,
- (CamelObjectFinalizeFunc) camel_address_finalize);
- }
-
- return type;
-}
-
/**
* camel_address_new:
*
CamelAddress *
camel_address_new (void)
{
- CamelAddress *new = CAMEL_ADDRESS(camel_object_new(camel_address_get_type()));
- return new;
+ return g_object_new (CAMEL_TYPE_ADDRESS, NULL);
}
/**
{
CamelAddress *new;
- new = CAMEL_ADDRESS (camel_object_new (CAMEL_OBJECT_GET_TYPE (addr)));
+ new = g_object_new (CAMEL_TYPE_ADDRESS, NULL);
camel_address_cat (new, addr);
return new;
g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), -1);
- class = CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (addr));
+ class = CAMEL_ADDRESS_GET_CLASS (addr);
g_return_val_if_fail (class->decode != NULL, -1);
return class->decode (addr, raw);
g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), NULL);
- class = CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (addr));
+ class = CAMEL_ADDRESS_GET_CLASS (addr);
g_return_val_if_fail (class->encode != NULL, NULL);
return class->encode (addr);
g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), -1);
- class = CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (addr));
+ class = CAMEL_ADDRESS_GET_CLASS (addr);
g_return_val_if_fail (class->unformat != NULL, -1);
return class->unformat (addr, raw);
g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), NULL);
- class = CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (addr));
+ class = CAMEL_ADDRESS_GET_CLASS (addr);
g_return_val_if_fail (class->format != NULL, NULL);
return class->format (addr);
g_return_val_if_fail (CAMEL_IS_ADDRESS (dest), -1);
g_return_val_if_fail (CAMEL_IS_ADDRESS (source), -1);
- class = CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (dest));
+ class = CAMEL_ADDRESS_GET_CLASS (dest);
g_return_val_if_fail (class->cat != NULL, -1);
return class->cat (dest, source);
g_return_if_fail (CAMEL_IS_ADDRESS (addr));
- class = CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (addr));
+ class = CAMEL_ADDRESS_GET_CLASS (addr);
g_return_if_fail (class->remove != NULL);
if (index == -1) {
#include <camel/camel-object.h>
-#define CAMEL_ADDRESS(obj) CAMEL_CHECK_CAST (obj, camel_address_get_type (), CamelAddress)
-#define CAMEL_ADDRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_address_get_type (), CamelAddressClass)
-#define CAMEL_IS_ADDRESS(obj) CAMEL_CHECK_TYPE (obj, camel_address_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_ADDRESS \
+ (camel_address_get_type ())
+#define CAMEL_ADDRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_ADDRESS, CamelAddress))
+#define CAMEL_ADDRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_ADDRESS, CamelAddressClass))
+#define CAMEL_IS_ADDRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_ADDRESS))
+#define CAMEL_IS_ADDRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_ADDRESS))
+#define CAMEL_ADDRESS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_ADDRESS, CamelAddressClass))
G_BEGIN_DECLS
gint index);
};
-CamelType camel_address_get_type (void);
+GType camel_address_get_type (void);
CamelAddress * camel_address_new (void);
CamelAddress * camel_address_new_clone (CamelAddress *addr);
gint camel_address_length (CamelAddress *addr);
#include <sys/stat.h>
#include <sys/types.h>
-#include <glib.h>
#include <glib/gstdio.h>
#include "camel-block-file.h"
static gint block_file_count = 0;
static gint block_file_threshhold = 10;
-#define CAMEL_BLOCK_FILE_GET_CLASS(obj) \
- ((CamelBlockFileClass *) CAMEL_OBJECT_GET_CLASS (obj))
-
static gint sync_nolock(CamelBlockFile *bs);
static gint sync_block_nolock(CamelBlockFile *bs, CamelBlock *bl);
+G_DEFINE_TYPE (CamelBlockFile, camel_block_file, CAMEL_TYPE_OBJECT)
+
static gint
block_file_validate_root(CamelBlockFile *bs)
{
}
static void
-camel_block_file_finalize(CamelBlockFile *bs)
+block_file_finalize(GObject *object)
{
+ CamelBlockFile *bs = CAMEL_BLOCK_FILE (object);
CamelBlock *bl, *bn;
struct _CamelBlockFilePrivate *p;
g_static_mutex_free (&p->root_lock);
g_free(p);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_block_file_parent_class)->finalize (object);
}
static void
camel_block_file_class_init(CamelBlockFileClass *class)
{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = block_file_finalize;
+
class->validate_root = block_file_validate_root;
class->init_root = block_file_init_root;
}
UNLOCK(block_file_lock);
}
-CamelType
-camel_block_file_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelBlockFile",
- sizeof (CamelBlockFile),
- sizeof (CamelBlockFileClass),
- (CamelObjectClassInitFunc) camel_block_file_class_init,
- NULL,
- (CamelObjectInitFunc) camel_block_file_init,
- (CamelObjectFinalizeFunc) camel_block_file_finalize);
- }
-
- return type;
-}
-
/* 'use' a block file for io */
static gint
block_file_use(CamelBlockFile *bs)
CamelBlockFileClass *class;
CamelBlockFile *bs;
- bs = (CamelBlockFile *)camel_object_new(camel_block_file_get_type());
+ bs = g_object_new (CAMEL_TYPE_BLOCK_FILE, NULL);
memcpy(bs->version, version, 8);
bs->path = g_strdup(path);
bs->flags = flags;
- bs->root_block = camel_block_file_get_block(bs, 0);
+ bs->root_block = camel_block_file_get_block (bs, 0);
if (bs->root_block == NULL) {
- camel_object_unref (bs);
+ g_object_unref (bs);
return NULL;
}
camel_block_file_detach_block(bs, bs->root_block);
class->init_root(bs);
camel_block_file_touch_block(bs, bs->root_block);
if (block_file_use(bs) == -1) {
- camel_object_unref (bs);
+ g_object_unref (bs);
return NULL;
}
if (sync_block_nolock(bs, bs->root_block) == -1
|| ftruncate(bs->fd, bs->root->last) == -1) {
block_file_unuse(bs);
- camel_object_unref (bs);
+ g_object_unref (bs);
return NULL;
}
block_file_unuse(bs);
*
* Returns: The block, or NULL if an error occured.
**/
-CamelBlock *camel_block_file_new_block(CamelBlockFile *bs)
+CamelBlock *
+camel_block_file_new_block (CamelBlockFile *bs)
{
CamelBlock *bl;
static gint key_file_count = 0;
static const gint key_file_threshhold = 10;
+G_DEFINE_TYPE (CamelKeyFile, camel_key_file, CAMEL_TYPE_OBJECT)
+
static void
-camel_key_file_finalize(CamelKeyFile *bs)
+key_file_finalize(GObject *object)
{
+ CamelKeyFile *bs = CAMEL_KEY_FILE (object);
struct _CamelKeyFilePrivate *p = bs->priv;
LOCK(key_file_lock);
g_static_mutex_free (&p->lock);
g_free(p);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_key_file_parent_class)->finalize (object);
}
static void
camel_key_file_class_init(CamelKeyFileClass *class)
{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = key_file_finalize;
}
static void
UNLOCK(key_file_lock);
}
-CamelType
-camel_key_file_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelKeyFile",
- sizeof (CamelKeyFile),
- sizeof (CamelKeyFileClass),
- (CamelObjectClassInitFunc) camel_key_file_class_init,
- NULL,
- (CamelObjectInitFunc) camel_key_file_init,
- (CamelObjectFinalizeFunc) camel_key_file_finalize);
- }
-
- return type;
-}
-
/* 'use' a key file for io */
static gint
key_file_use(CamelKeyFile *bs)
d(printf("New key file '%s'\n", path));
- kf = (CamelKeyFile *)camel_object_new(camel_key_file_get_type());
+ kf = g_object_new (CAMEL_TYPE_KEY_FILE, NULL);
kf->path = g_strdup(path);
kf->fp = NULL;
kf->flags = flags;
kf->last = 8;
if (key_file_use(kf) == -1) {
- camel_object_unref (kf);
+ g_object_unref (kf);
kf = NULL;
} else {
fseek(kf->fp, 0, SEEK_END);
kf->flags &= ~(O_CREAT|O_EXCL|O_TRUNC);
if (err) {
- camel_object_unref (kf);
+ g_object_unref (kf);
kf = NULL;
}
}
#include <stdio.h>
#include <sys/types.h>
+/* Standard GObject macros */
+#define CAMEL_TYPE_BLOCK_FILE \
+ (camel_block_file_get_type ())
+#define CAMEL_BLOCK_FILE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_BLOCK_FILE, CamelBlockFile))
+#define CAMEL_BLOCK_FILE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_BLOCK_FILE, CamelBlockFileClass))
+#define CAMEL_IS_BLOCK_FILE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_BLOCK_FILE))
+#define CAMEL_IS_BLOCK_FILE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_BLOCK_FILE))
+#define CAMEL_BLOCK_FILE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_BLOCK_FILE, CamelBlockFileClass))
+
+#define CAMEL_TYPE_KEY_FILE \
+ (camel_key_file_get_type ())
+#define CAMEL_KEY_FILE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_KEY_FILE, CamelKeyFile))
+#define CAMEL_KEY_FILE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_KEY_FILE, CamelKeyFileClass))
+#define CAMEL_IS_KEY_FILE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_KEY_FILE))
+#define CAMEL_IS_KEY_FILE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_KEY_FILE))
+#define CAMEL_KEY_FILE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_KEY_FILE, CamelKeyFileClass))
+
G_BEGIN_DECLS
typedef guint32 camel_block_t; /* block offset, absolute, bottom BLOCK_SIZE_BITS always 0 */
gint (*init_root)(CamelBlockFile *);
};
-CamelType camel_block_file_get_type (void);
+GType camel_block_file_get_type (void);
CamelBlockFile *camel_block_file_new (const gchar *path,
gint flags,
const gchar version[8],
CamelObjectClass parent;
};
-CamelType camel_key_file_get_type(void);
+GType camel_key_file_get_type(void);
CamelKeyFile * camel_key_file_new(const gchar *path, gint flags, const gchar version[8]);
gint camel_key_file_rename(CamelKeyFile *kf, const gchar *path);
#define CAMEL_CERTDB_VERSION 0x100
+#define CAMEL_CERTDB_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_CERTDB, CamelCertDBPrivate))
+
struct _CamelCertDBPrivate {
GMutex *db_lock; /* for the db hashtable/array */
GMutex *io_lock; /* load/save lock, for access to saved_count, etc */
static const gchar *cert_get_string (CamelCertDB *certdb, CamelCert *cert, gint string);
static void cert_set_string (CamelCertDB *certdb, CamelCert *cert, gint string, const gchar *value);
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelCertDB, camel_certdb, CAMEL_TYPE_OBJECT)
static void
-certdb_finalize (CamelObject *object)
+certdb_finalize (GObject *object)
{
CamelCertDB *certdb = CAMEL_CERTDB (object);
CamelCertDBPrivate *priv;
- priv = certdb->priv;
+ priv = CAMEL_CERTDB_GET_PRIVATE (object);
if (certdb->flags & CAMEL_CERTDB_DIRTY)
camel_certdb_save (certdb);
g_mutex_free (priv->alloc_lock);
g_mutex_free (priv->ref_lock);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_certdb_parent_class)->finalize (object);
}
static void
camel_certdb_class_init (CamelCertDBClass *class)
{
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelCertDBPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = certdb_finalize;
class->header_load = certdb_header_load;
class->header_save = certdb_header_save;
static void
camel_certdb_init (CamelCertDB *certdb)
{
- certdb->priv = g_malloc (sizeof (CamelCertDBPrivate));
+ certdb->priv = CAMEL_CERTDB_GET_PRIVATE (certdb);
certdb->filename = NULL;
certdb->version = CAMEL_CERTDB_VERSION;
certdb->priv->ref_lock = g_mutex_new ();
}
-CamelType
-camel_certdb_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (),
- "CamelCertDB",
- sizeof (CamelCertDB),
- sizeof (CamelCertDBClass),
- (CamelObjectClassInitFunc) camel_certdb_class_init,
- NULL,
- (CamelObjectInitFunc) camel_certdb_init,
- (CamelObjectFinalizeFunc) certdb_finalize);
- }
-
- return type;
-}
-
CamelCertDB *
camel_certdb_new (void)
{
- return (CamelCertDB *) camel_object_new (camel_certdb_get_type ());
+ return g_object_new (CAMEL_TYPE_CERTDB, NULL);
}
static CamelCertDB *default_certdb = NULL;
g_static_mutex_lock (&default_certdb_lock);
if (default_certdb)
- camel_object_unref (default_certdb);
+ g_object_unref (default_certdb);
if (certdb)
- camel_object_ref (certdb);
+ g_object_ref (certdb);
default_certdb = certdb;
g_static_mutex_lock (&default_certdb_lock);
if (default_certdb)
- camel_object_ref (default_certdb);
+ g_object_ref (default_certdb);
certdb = default_certdb;
*
* Locks #certdb's #lock. Unlock it with camel_certdb_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
camel_certdb_lock (CamelCertDB *certdb, CamelCertDBLock lock)
*
* Unlocks #certdb's #lock, previously locked with camel_certdb_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
camel_certdb_unlock (CamelCertDB *certdb, CamelCertDBLock lock)
#include <stdio.h>
#include <camel/camel-object.h>
-#define CAMEL_CERTDB_TYPE (camel_certdb_get_type ())
-#define CAMEL_CERTDB(obj) (CAMEL_CHECK_CAST (obj, camel_certdb_get_type (), CamelCertDB))
-#define CAMEL_CERTDB_CLASS(klass) (CAMEL_CHECK_CLASS_CAST (klass, camel_certdb_get_type (), CamelCertDBClass))
-#define CAMEL_IS_CERTDB(obj) (CAMEL_CHECK_TYPE (obj, camel_certdb_get_type ()))
+/* Standard GObject macros */
+#define CAMEL_TYPE_CERTDB \
+ (camel_certdb_get_type ())
+#define CAMEL_CERTDB(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_CERTDB, CamelCertDB))
+#define CAMEL_CERTDB_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_CERTDB, CamelCertDBClass))
+#define CAMEL_IS_CERTDB(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_CERTDB))
+#define CAMEL_IS_CERTDB_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_CERTDB))
#define CAMEL_CERTDB_GET_CLASS(obj) \
- ((CamelCertDBClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_CERTDB, CamelCertDBClass))
G_BEGIN_DECLS
void (*cert_set_string) (CamelCertDB *certdb, CamelCert *cert, gint string, const gchar *value);
};
-CamelType camel_certdb_get_type (void);
+GType camel_certdb_get_type (void);
CamelCertDB *camel_certdb_new (void);
#define d(x)
+#define CAMEL_CIPHER_CONTEXT_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_CIPHER_CONTEXT, CamelCipherContextPrivate))
+
struct _CamelCipherContextPrivate {
CamelSession *session;
GMutex *lock;
};
-static CamelObjectClass *parent_class = NULL;
+enum {
+ PROP_0,
+ PROP_SESSION
+};
+
+G_DEFINE_TYPE (CamelCipherContext, camel_cipher_context, CAMEL_TYPE_OBJECT)
static gint
cipher_sign (CamelCipherContext *ctx,
g_return_if_fail (CAMEL_IS_SESSION (session));
g_return_if_fail (context->priv->session == NULL);
- context->priv->session = camel_object_ref (session);
+ context->priv->session = g_object_ref (session);
+}
+
+static void
+cipher_context_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_SESSION:
+ cipher_context_set_session (
+ CAMEL_CIPHER_CONTEXT (object),
+ g_value_get_object (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
-cipher_context_finalize (CamelObject *object)
+cipher_context_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_SESSION:
+ g_value_set_object (
+ value, camel_cipher_context_get_session (
+ CAMEL_CIPHER_CONTEXT (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+cipher_context_dispose (GObject *object)
{
- CamelCipherContext *context = (CamelCipherContext *) object;
+ CamelCipherContextPrivate *priv;
- camel_object_unref (context->priv->session);
+ priv = CAMEL_CIPHER_CONTEXT_GET_PRIVATE (object);
- g_mutex_free (context->priv->lock);
+ if (priv->session != NULL) {
+ g_object_unref (priv->session);
+ priv->session = NULL;
+ }
- g_free (context->priv);
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (camel_cipher_context_parent_class)->dispose (object);
+}
+
+static void
+cipher_context_finalize (GObject *object)
+{
+ CamelCipherContextPrivate *priv;
+
+ priv = CAMEL_CIPHER_CONTEXT_GET_PRIVATE (object);
+
+ g_mutex_free (priv->lock);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_cipher_context_parent_class)->finalize (object);
}
static void
camel_cipher_context_class_init (CamelCipherContextClass *class)
{
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelCipherContextPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = cipher_context_set_property;
+ object_class->get_property = cipher_context_get_property;
+ object_class->dispose = cipher_context_dispose;
+ object_class->finalize = cipher_context_finalize;
class->hash_to_id = cipher_hash_to_id;
class->id_to_hash = cipher_id_to_hash;
class->decrypt = cipher_decrypt;
class->import_keys = cipher_import_keys;
class->export_keys = cipher_export_keys;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SESSION,
+ g_param_spec_object (
+ "session",
+ "Session",
+ NULL,
+ CAMEL_TYPE_SESSION,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
}
static void
camel_cipher_context_init (CamelCipherContext *context)
{
- context->priv = g_new0 (struct _CamelCipherContextPrivate, 1);
+ context->priv = CAMEL_CIPHER_CONTEXT_GET_PRIVATE (context);
context->priv->lock = g_mutex_new ();
}
-CamelType
-camel_cipher_context_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (),
- "CamelCipherContext",
- sizeof (CamelCipherContext),
- sizeof (CamelCipherContextClass),
- (CamelObjectClassInitFunc) camel_cipher_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_cipher_context_init,
- (CamelObjectFinalizeFunc) cipher_context_finalize);
- }
-
- return type;
-}
-
/**
* camel_cipher_context_new:
- * @session: CamelSession
+ * @session: a #CamelSession
*
* This creates a new CamelCipherContext object which is used to sign,
* verify, encrypt and decrypt streams.
CamelCipherContext *
camel_cipher_context_new (CamelSession *session)
{
- CamelCipherContext *context;
-
g_return_val_if_fail (session != NULL, NULL);
- context = CAMEL_CIPHER_CONTEXT (camel_object_new (CAMEL_CIPHER_CONTEXT_TYPE));
-
- cipher_context_set_session (context, session);
-
- return context;
+ return g_object_new (
+ CAMEL_TYPE_CIPHER_CONTEXT,
+ "session", session, NULL);
}
+/**
+ * camel_cipher_context_get_session:
+ * @context: a #CamelCipherContext
+ *
+ * Since: 3.0
+ **/
CamelSession *
camel_cipher_context_get_session (CamelCipherContext *context)
{
return context->priv->session;
}
-/**
- * camel_cipher_context_construct:
- * @context: CamelCipherContext
- * @session: CamelSession
- *
- * Constucts the CamelCipherContext
- **/
-void
-camel_cipher_context_construct (CamelCipherContext *context, CamelSession *session)
-{
- g_return_if_fail (CAMEL_IS_CIPHER_CONTEXT (context));
- g_return_if_fail (CAMEL_IS_SESSION (session));
-
- cipher_context_set_session (context, session);
-}
-
/* See rfc3156, section 2 and others */
/* We do this simply: Anything not base64 must be qp
This is so that we can safely translate any occurance of "From "
filter = camel_stream_filter_new (ostream);
canon = camel_mime_filter_canon_new (flags);
camel_stream_filter_add (CAMEL_STREAM_FILTER (filter), canon);
- camel_object_unref (canon);
+ g_object_unref (canon);
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *)part, filter) != -1
&& camel_stream_flush (filter) != -1)
res = 0;
- camel_object_unref (filter);
+ g_object_unref (filter);
camel_stream_reset (ostream);
return res;
#include <camel/camel-list-utils.h>
#include <camel/camel-mime-part.h>
#include <camel/camel-session.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-stream.h>
-#define CAMEL_CIPHER_CONTEXT_TYPE (camel_cipher_context_get_type ())
-#define CAMEL_CIPHER_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_CIPHER_CONTEXT_TYPE, CamelCipherContext))
-#define CAMEL_CIPHER_CONTEXT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_CIPHER_CONTEXT_TYPE, CamelCipherContextClass))
-#define CAMEL_IS_CIPHER_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_CIPHER_CONTEXT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_CIPHER_CONTEXT \
+ (camel_cipher_context_get_type ())
+#define CAMEL_CIPHER_CONTEXT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_CIPHER_CONTEXT, CamelCipherContext))
+#define CAMEL_CIPHER_CONTEXT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_CIPHER_CONTEXT, CamelCipherContextClass))
+#define CAMEL_IS_CIPHER_CONTEXT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_CIPHER_CONTEXT))
+#define CAMEL_IS_CIPHER_CONTEXT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_CIPHER_CONTEXT))
#define CAMEL_CIPHER_CONTEXT_GET_CLASS(obj) \
- ((CamelCipherContextClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_CIPHER_CONTEXT, CamelCipherContextClass))
G_BEGIN_DECLS
CamelException *ex);
};
-CamelType camel_cipher_context_get_type (void);
+GType camel_cipher_context_get_type (void);
CamelCipherContext *
camel_cipher_context_new (CamelSession *session);
-void camel_cipher_context_construct (CamelCipherContext *context, CamelSession *session);
CamelSession * camel_cipher_context_get_session(CamelCipherContext *context);
/* cipher context util routines */
#include <glib/gi18n-lib.h>
#include "camel-data-cache.h"
+#include "camel-object-bag.h"
#include "camel-stream-fs.h"
#include "camel-stream-mem.h"
#include "camel-file-utils.h"
once an hour should be enough */
#define CAMEL_DATA_CACHE_CYCLE_TIME (60*60)
+#define CAMEL_DATA_CACHE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_DATA_CACHE, CamelDataCachePrivate))
+
struct _CamelDataCachePrivate {
CamelObjectBag *busy_bag;
time_t expire_last[1<<CAMEL_DATA_CACHE_BITS];
};
-static CamelObject *camel_data_cache_parent;
+enum {
+ PROP_0,
+ PROP_PATH
+};
+
+G_DEFINE_TYPE (CamelDataCache, camel_data_cache, CAMEL_TYPE_OBJECT)
static void
-data_cache_finalize (CamelDataCache *cdc)
+data_cache_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- CamelDataCachePrivate *priv = cdc->priv;
+ switch (property_id) {
+ case PROP_PATH:
+ camel_data_cache_set_path (
+ CAMEL_DATA_CACHE (object),
+ g_value_get_string (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+data_cache_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_PATH:
+ g_value_set_string (
+ value, camel_data_cache_get_path (
+ CAMEL_DATA_CACHE (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+data_cache_finalize (GObject *object)
+{
+ CamelDataCachePrivate *priv;
+
+ priv = CAMEL_DATA_CACHE_GET_PRIVATE (object);
camel_object_bag_destroy (priv->busy_bag);
g_free (priv->path);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_data_cache_parent_class)->finalize (object);
}
static void
camel_data_cache_class_init (CamelDataCacheClass *class)
{
- camel_data_cache_parent = (CamelObject *)camel_object_get_type ();
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelDataCachePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = data_cache_set_property;
+ object_class->get_property = data_cache_get_property;
+ object_class->finalize = data_cache_finalize;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_PATH,
+ g_param_spec_string (
+ "path",
+ "Path",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
}
static void
(CamelCopyFunc) g_strdup,
(GFreeFunc) g_free);
- data_cache->priv = g_malloc0(sizeof(*data_cache->priv));
+ data_cache->priv = CAMEL_DATA_CACHE_GET_PRIVATE (data_cache);
data_cache->priv->busy_bag = busy_bag;
data_cache->priv->expire_age = -1;
data_cache->priv->expire_access = -1;
}
-CamelType
-camel_data_cache_get_type(void)
-{
- static CamelType camel_data_cache_type = CAMEL_INVALID_TYPE;
-
- if (camel_data_cache_type == CAMEL_INVALID_TYPE) {
- camel_data_cache_type = camel_type_register(
- CAMEL_TYPE_OBJECT, "CamelDataCache",
- sizeof (CamelDataCache),
- sizeof (CamelDataCacheClass),
- (CamelObjectClassInitFunc) camel_data_cache_class_init,
- NULL,
- (CamelObjectInitFunc) camel_data_cache_init,
- (CamelObjectFinalizeFunc) data_cache_finalize);
- }
-
- return camel_data_cache_type;
-}
-
/**
* camel_data_cache_new:
* @path: Base path of cache, subdirectories will be created here.
* be written to.
**/
CamelDataCache *
-camel_data_cache_new(const gchar *path, CamelException *ex)
+camel_data_cache_new (const gchar *path,
+ CamelException *ex)
{
- CamelDataCache *cdc;
+ g_return_val_if_fail (path != NULL, NULL);
if (g_mkdir_with_parents (path, 0700) == -1) {
camel_exception_setv (
return NULL;
}
- cdc = (CamelDataCache *)camel_object_new(CAMEL_DATA_CACHE_TYPE);
-
- cdc->priv->path = g_strdup (path);
-
- return cdc;
+ return g_object_new (CAMEL_TYPE_DATA_CACHE, "path", path, NULL);
}
const gchar *
stream = camel_object_bag_get(cdc->priv->busy_bag, s->str);
if (stream) {
camel_object_bag_remove(cdc->priv->busy_bag, stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
}
}
}
* The caller must unref this when finished.
**/
CamelStream *
-camel_data_cache_add(CamelDataCache *cdc, const gchar *path, const gchar *key, CamelException *ex)
+camel_data_cache_add (CamelDataCache *cdc,
+ const gchar *path,
+ const gchar *key,
+ CamelException *ex)
{
gchar *real;
CamelStream *stream;
if (stream) {
g_unlink(real);
camel_object_bag_remove(cdc->priv->busy_bag, stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
}
} while (stream != NULL);
- stream = camel_stream_fs_new_with_name(real, O_RDWR|O_CREAT|O_TRUNC, 0600);
+ stream = camel_stream_fs_new_with_name (
+ real, O_RDWR|O_CREAT|O_TRUNC, 0600);
if (stream)
camel_object_bag_add(cdc->priv->busy_bag, real, stream);
else
real = data_cache_path(cdc, FALSE, path, key);
stream = camel_object_bag_reserve(cdc->priv->busy_bag, real);
if (!stream) {
- stream = camel_stream_fs_new_with_name (real, O_RDWR, 0600);
+ stream = camel_stream_fs_new_with_name (
+ real, O_RDWR, 0600);
if (stream)
camel_object_bag_add(cdc->priv->busy_bag, real, stream);
else
stream = camel_object_bag_get(cdc->priv->busy_bag, real);
if (stream) {
camel_object_bag_remove(cdc->priv->busy_bag, stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
}
/* maybe we were a mem stream */
#include <camel/camel-stream.h>
#include <camel/camel-exception.h>
-#define CAMEL_DATA_CACHE_TYPE (camel_data_cache_get_type ())
-#define CAMEL_DATA_CACHE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DATA_CACHE_TYPE, CamelFolder))
-#define CAMEL_DATA_CACHE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DATA_CACHE_TYPE, CamelFolderClass))
-#define CAMEL_IS_DATA_CACHE(o) (CAMEL_CHECK_TYPE((o), CAMEL_DATA_CACHE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_DATA_CACHE \
+ (camel_data_cache_get_type ())
+#define CAMEL_DATA_CACHE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_DATA_CACHE, CamelDataCache))
+#define CAMEL_DATA_CACHE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_DATA_CACHE, CamelDataCacheClass))
+#define CAMEL_IS_DATA_CACHE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_DATA_CACHE))
+#define CAMEL_IS_DATA_CACHE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_DATA_CACHE))
+#define CAMEL_DATA_CACHE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_DATA_CACHE, CamelDataCacheClass))
G_BEGIN_DECLS
CamelObjectClass parent_class;
};
-CamelType camel_data_cache_get_type (void);
+GType camel_data_cache_get_type (void);
CamelDataCache *camel_data_cache_new (const gchar *path,
CamelException *ex);
const gchar * camel_data_cache_get_path (CamelDataCache *cdc);
#define d(x)
+#define CAMEL_DATA_WRAPPER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapperPrivate))
+
struct _CamelDataWrapperPrivate {
GStaticMutex stream_lock;
};
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelDataWrapper, camel_data_wrapper, CAMEL_TYPE_OBJECT)
static void
-camel_data_wrapper_finalize (CamelObject *object)
+data_wrapper_dispose (GObject *object)
{
- CamelDataWrapper *camel_data_wrapper = CAMEL_DATA_WRAPPER (object);
+ CamelDataWrapper *data_wrapper = CAMEL_DATA_WRAPPER (object);
- g_static_mutex_free (&camel_data_wrapper->priv->stream_lock);
+ if (data_wrapper->mime_type != NULL) {
+ camel_content_type_unref (data_wrapper->mime_type);
+ data_wrapper->mime_type = NULL;
+ }
+
+ if (data_wrapper->stream != NULL) {
+ g_object_unref (data_wrapper->stream);
+ data_wrapper->stream = NULL;
+ }
- g_free (camel_data_wrapper->priv);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_data_wrapper_parent_class)->dispose (object);
+}
+
+static void
+data_wrapper_finalize (GObject *object)
+{
+ CamelDataWrapper *data_wrapper = CAMEL_DATA_WRAPPER (object);
- if (camel_data_wrapper->mime_type)
- camel_content_type_unref (camel_data_wrapper->mime_type);
+ g_static_mutex_free (&data_wrapper->priv->stream_lock);
- if (camel_data_wrapper->stream)
- camel_object_unref (camel_data_wrapper->stream);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_data_wrapper_parent_class)->finalize (object);
}
static gssize
case CAMEL_TRANSFER_ENCODING_BASE64:
filter = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_BASE64_DEC);
camel_stream_filter_add (CAMEL_STREAM_FILTER (fstream), filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
break;
case CAMEL_TRANSFER_ENCODING_QUOTEDPRINTABLE:
filter = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_QP_DEC);
camel_stream_filter_add (CAMEL_STREAM_FILTER (fstream), filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
break;
case CAMEL_TRANSFER_ENCODING_UUENCODE:
filter = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_UU_DEC);
camel_stream_filter_add (CAMEL_STREAM_FILTER (fstream), filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
break;
default:
break;
filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_DECODE,
CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
camel_stream_filter_add (CAMEL_STREAM_FILTER (fstream), filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
}
ret = camel_data_wrapper_write_to_stream (data_wrapper, fstream);
+
camel_stream_flush (fstream);
- camel_object_unref (fstream);
+ g_object_unref (fstream);
return ret;
}
CamelStream *stream)
{
if (data_wrapper->stream)
- camel_object_unref (data_wrapper->stream);
+ g_object_unref (data_wrapper->stream);
- data_wrapper->stream = camel_object_ref (stream);
+ data_wrapper->stream = g_object_ref (stream);
return 0;
}
static void
camel_data_wrapper_class_init (CamelDataWrapperClass *class)
{
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelDataWrapperPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = data_wrapper_dispose;
+ object_class->finalize = data_wrapper_finalize;
class->write_to_stream = data_wrapper_write_to_stream;
class->decode_to_stream = data_wrapper_decode_to_stream;
static void
camel_data_wrapper_init (CamelDataWrapper *data_wrapper)
{
- data_wrapper->priv = g_malloc (sizeof (struct _CamelDataWrapperPrivate));
+ data_wrapper->priv = CAMEL_DATA_WRAPPER_GET_PRIVATE (data_wrapper);
g_static_mutex_init (&data_wrapper->priv->stream_lock);
data_wrapper->offline = FALSE;
}
-CamelType
-camel_data_wrapper_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_TYPE_OBJECT,
- "CamelDataWrapper",
- sizeof (CamelDataWrapper),
- sizeof (CamelDataWrapperClass),
- (CamelObjectClassInitFunc) camel_data_wrapper_class_init,
- NULL,
- (CamelObjectInitFunc) camel_data_wrapper_init,
- (CamelObjectFinalizeFunc) camel_data_wrapper_finalize);
- }
-
- return type;
-}
-
/**
* camel_data_wrapper_new:
*
CamelDataWrapper *
camel_data_wrapper_new (void)
{
- return (CamelDataWrapper *) camel_object_new (CAMEL_DATA_WRAPPER_TYPE);
+ return g_object_new (CAMEL_TYPE_DATA_WRAPPER, NULL);
}
/**
*
* Locks #data_wrapper's #lock. Unlock it with camel_data_wrapper_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_data_wrapper_lock (CamelDataWrapper *data_wrapper, CamelDataWrapperLock lock)
+camel_data_wrapper_lock (CamelDataWrapper *data_wrapper,
+ CamelDataWrapperLock lock)
{
- g_return_if_fail (data_wrapper != NULL);
g_return_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper));
- g_return_if_fail (data_wrapper->priv != NULL);
switch (lock) {
case CDW_STREAM_LOCK:
*
* Unlocks #data_wrapper's #lock, previously locked with camel_data_wrapper_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_data_wrapper_unlock (CamelDataWrapper *data_wrapper, CamelDataWrapperLock lock)
+camel_data_wrapper_unlock (CamelDataWrapper *data_wrapper,
+ CamelDataWrapperLock lock)
{
- g_return_if_fail (data_wrapper != NULL);
g_return_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper));
- g_return_if_fail (data_wrapper->priv != NULL);
switch (lock) {
case CDW_STREAM_LOCK:
#include <camel/camel-mime-utils.h>
#include <camel/camel-stream.h>
-#define CAMEL_DATA_WRAPPER_TYPE (camel_data_wrapper_get_type ())
-#define CAMEL_DATA_WRAPPER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DATA_WRAPPER_TYPE, CamelDataWrapper))
-#define CAMEL_DATA_WRAPPER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DATA_WRAPPER_TYPE, CamelDataWrapperClass))
-#define CAMEL_IS_DATA_WRAPPER(o) (CAMEL_CHECK_TYPE((o), CAMEL_DATA_WRAPPER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_DATA_WRAPPER \
+ (camel_data_wrapper_get_type ())
+#define CAMEL_DATA_WRAPPER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapper))
+#define CAMEL_DATA_WRAPPER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapperClass))
+#define CAMEL_IS_DATA_WRAPPER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_DATA_WRAPPER))
+#define CAMEL_IS_DATA_WRAPPER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_DATA_WRAPPER))
#define CAMEL_DATA_WRAPPER_GET_CLASS(obj) \
- ((CamelDataWrapperClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapperClass))
G_BEGIN_DECLS
gboolean (*is_offline) (CamelDataWrapper *data_wrapper);
};
-CamelType camel_data_wrapper_get_type (void);
+GType camel_data_wrapper_get_type (void);
CamelDataWrapper *
camel_data_wrapper_new (void);
gssize camel_data_wrapper_write_to_stream
(CamelDataWrapper *data_wrapper,
CamelStream *stream);
gboolean camel_data_wrapper_is_offline (CamelDataWrapper *data_wrapper);
-
-void camel_data_wrapper_lock (CamelDataWrapper *data_wrapper, CamelDataWrapperLock lock);
-void camel_data_wrapper_unlock (CamelDataWrapper *data_wrapper, CamelDataWrapperLock lock);
+void camel_data_wrapper_lock (CamelDataWrapper *data_wrapper,
+ CamelDataWrapperLock lock);
+void camel_data_wrapper_unlock (CamelDataWrapper *data_wrapper,
+ CamelDataWrapperLock lock);
G_END_DECLS
#define d(x)
+G_DEFINE_TYPE (CamelDiscoDiary, camel_disco_diary, CAMEL_TYPE_OBJECT)
+
static void
unref_folder (gpointer key, gpointer value, gpointer data)
{
- camel_object_unref (value);
+ g_object_unref (value);
}
static void
}
static void
-disco_diary_finalize (CamelDiscoDiary *diary)
+disco_diary_finalize (GObject *object)
{
+ CamelDiscoDiary *diary = CAMEL_DISCO_DIARY (object);
+
if (diary->file)
fclose (diary->file);
g_hash_table_foreach (diary->uidmap, free_uid, NULL);
g_hash_table_destroy (diary->uidmap);
}
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_disco_diary_parent_class)->finalize (object);
}
static void
camel_disco_diary_class_init (CamelDiscoDiaryClass *class)
{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = disco_diary_finalize;
}
static void
diary->uidmap = g_hash_table_new (g_str_hash, g_str_equal);
}
-CamelType
-camel_disco_diary_get_type (void)
-{
- static CamelType camel_disco_diary_type = CAMEL_INVALID_TYPE;
-
- if (camel_disco_diary_type == CAMEL_INVALID_TYPE) {
- camel_disco_diary_type = camel_type_register (
- CAMEL_TYPE_OBJECT, "CamelDiscoDiary",
- sizeof (CamelDiscoDiary),
- sizeof (CamelDiscoDiaryClass),
- (CamelObjectClassInitFunc) camel_disco_diary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_disco_diary_init,
- (CamelObjectFinalizeFunc) disco_diary_finalize);
- }
-
- return camel_disco_diary_type;
-}
-
static gint
diary_encode_uids (CamelDiscoDiary *diary, GPtrArray *uids)
{
{
g_free (name);
camel_folder_sync (folder, FALSE, NULL);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
void
g_return_val_if_fail (CAMEL_IS_DISCO_STORE (store), NULL);
g_return_val_if_fail (filename != NULL, NULL);
- diary = CAMEL_DISCO_DIARY (camel_object_new (CAMEL_DISCO_DIARY_TYPE));
+ diary = g_object_new (CAMEL_TYPE_DISCO_DIARY, NULL);
diary->store = store;
d(printf("diary log file '%s'\n", filename));
diary->file = g_fopen (filename, "a+b");
if (!diary->file) {
- camel_object_unref (diary);
+ g_object_unref (diary);
camel_exception_setv (
ex, CAMEL_EXCEPTION_SYSTEM,
"Could not open journal file: %s",
#include <camel/camel-disco-store.h>
-#define CAMEL_DISCO_DIARY_TYPE (camel_disco_diary_get_type ())
-#define CAMEL_DISCO_DIARY(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DISCO_DIARY_TYPE, CamelDiscoDiary))
-#define CAMEL_DISCO_DIARY_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_DIARY_TYPE, CamelDiscoDiaryClass))
-#define CAMEL_IS_DISCO_DIARY(o) (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_DIARY_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_DISCO_DIARY \
+ (camel_disco_diary_get_type ())
+#define CAMEL_DISCO_DIARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_DISCO_DIARY, CamelDiscoDiary))
+#define CAMEL_DISCO_DIARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_DISCO_DIARY, CamelDiscoDiaryClass))
+#define CAMEL_IS_DISCO_DIARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_DISCO_DIARY))
+#define CAMEL_IS_DISCO_DIARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_DISCO_DIARY))
+#define CAMEL_DISCO_DIARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_DISCO_DIARY, CamelDiscoDiaryClass))
G_BEGIN_DECLS
CamelObjectClass parent_class;
};
-CamelType camel_disco_diary_get_type (void);
+GType camel_disco_diary_get_type (void);
CamelDiscoDiary *
camel_disco_diary_new (CamelDiscoStore *store,
const gchar *filename,
#include "camel-exception.h"
#include "camel-session.h"
-static CamelFolderClass *parent_class = NULL;
static GSList *disco_folder_properties;
static CamelProperty disco_property_list[] = {
CamelFolderChangeInfo *changes;
};
+G_DEFINE_TYPE (CamelDiscoFolder, camel_disco_folder, CAMEL_TYPE_FOLDER)
+
static void
cdf_sync_offline(CamelSession *session, CamelSessionThreadMsg *mm)
{
if (m->changes)
camel_folder_change_info_free(m->changes);
- camel_object_unref (m->folder);
+ g_object_unref (m->folder);
}
static CamelSessionThreadOps cdf_sync_ops = {
m = camel_session_thread_msg_new(session, &cdf_sync_ops, sizeof(*m));
m->changes = camel_folder_change_info_new();
camel_folder_change_info_cat(m->changes, changes);
- m->folder = camel_object_ref (folder);
+ m->folder = g_object_ref (folder);
camel_session_thread_queue(session, &m->msg, 0);
}
}
props.argc = 1;
props.argv[0] = *arg;
- ((CamelObjectClass *)parent_class)->getv(object, ex, &props);
+ CAMEL_OBJECT_CLASS (camel_disco_folder_parent_class)->getv(object, ex, &props);
*arg->ca_ptr = g_slist_concat(*arg->ca_ptr, g_slist_copy(disco_folder_properties));
break; }
/* disco args */
}
if (count)
- return ((CamelObjectClass *)parent_class)->getv(object, ex, args);
+ return CAMEL_OBJECT_CLASS (camel_disco_folder_parent_class)->getv(object, ex, args);
return 0;
}
if (save)
camel_object_state_write(object);
- return ((CamelObjectClass *)parent_class)->setv(object, ex, args);
+ return CAMEL_OBJECT_CLASS (camel_disco_folder_parent_class)->setv(object, ex, args);
}
static gboolean
CamelFolderClass *folder_class;
gint ii;
- parent_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = disco_getv;
camel_object_class->setv = disco_setv;
(CamelObjectEventHookFunc) cdf_folder_changed, NULL);
}
-CamelType
-camel_disco_folder_get_type (void)
-{
- static CamelType camel_disco_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_disco_folder_type == CAMEL_INVALID_TYPE) {
- camel_disco_folder_type = camel_type_register (
- CAMEL_FOLDER_TYPE, "CamelDiscoFolder",
- sizeof (CamelDiscoFolder),
- sizeof (CamelDiscoFolderClass),
- (CamelObjectClassInitFunc)camel_disco_folder_class_init, NULL,
- (CamelObjectInitFunc)camel_disco_folder_init, NULL);
- }
-
- return camel_disco_folder_type;
-}
-
/**
* camel_disco_folder_expunge_uids:
* @folder: a (disconnectable) folder
#include <camel/camel-folder.h>
-#define CAMEL_DISCO_FOLDER_TYPE (camel_disco_folder_get_type ())
-#define CAMEL_DISCO_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DISCO_FOLDER_TYPE, CamelDiscoFolder))
-#define CAMEL_DISCO_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_FOLDER_TYPE, CamelDiscoFolderClass))
-#define CAMEL_IS_DISCO_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_DISCO_FOLDER \
+ (camel_disco_folder_get_type ())
+#define CAMEL_DISCO_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_DISCO_FOLDER, CamelDiscoFolder))
+#define CAMEL_DISCO_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_DISCO_FOLDER, CamelDiscoFolderClass))
+#define CAMEL_IS_DISCO_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_DISCO_FOLDER))
+#define CAMEL_IS_DISCO_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_DISCO_FOLDER))
#define CAMEL_DISCO_FOLDER_GET_CLASS(obj) \
- ((CamelDiscoFolderClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_DISCO_FOLDER, CamelDiscoFolderClass))
G_BEGIN_DECLS
const gchar *new_uid);
};
-CamelType camel_disco_folder_get_type (void);
+GType camel_disco_folder_get_type (void);
gboolean camel_disco_folder_expunge_uids (CamelFolder *folder,
GPtrArray *uids,
CamelException *ex);
#define d(x)
-static gpointer camel_disco_store_parent_class;
+G_DEFINE_TYPE (CamelDiscoStore, camel_disco_store, CAMEL_TYPE_STORE)
static gboolean
disco_store_construct (CamelService *service,
/* Need to resync. Note we do the ref thing since during the replay
disconnect could be called, which will remove store->diary and unref it */
store->status = CAMEL_DISCO_STORE_RESYNCING;
- diary = camel_object_ref (store->diary);
+ diary = g_object_ref (store->diary);
camel_disco_diary_replay(diary, ex);
- camel_object_unref (diary);
+ g_object_unref (diary);
store->status = CAMEL_DISCO_STORE_ONLINE;
if (camel_exception_is_set (ex))
return FALSE;
folders = camel_object_bag_list(((CamelStore *)disco_store)->folders);
for (i=0;i<folders->len;i++) {
folder = folders->pdata[i];
- if (CAMEL_CHECK_TYPE(folder, CAMEL_DISCO_FOLDER_TYPE)
+ if (G_TYPE_CHECK_INSTANCE_TYPE(folder, CAMEL_TYPE_DISCO_FOLDER)
&& (sync || ((CamelDiscoFolder *)folder)->offline_sync)) {
camel_disco_folder_prepare_for_offline((CamelDiscoFolder *)folder, "", &x);
camel_exception_clear(&x);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
}
g_ptr_array_free(folders, TRUE);
}
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_disco_store_parent_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
-
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = disco_store_construct;
service_class->connect = disco_store_connect;
class->set_status = disco_store_set_status;
}
-CamelType
-camel_disco_store_get_type (void)
+static void
+camel_disco_store_init (CamelDiscoStore *disco_store)
{
- static CamelType camel_disco_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_disco_store_type == CAMEL_INVALID_TYPE) {
- camel_disco_store_type = camel_type_register (
- CAMEL_STORE_TYPE,
- "CamelDiscoStore",
- sizeof (CamelDiscoStore),
- sizeof (CamelDiscoStoreClass),
- (CamelObjectClassInitFunc) camel_disco_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_disco_store_type;
}
/**
folders = camel_object_bag_list(((CamelStore *)disco_store)->folders);
for (i=0;i<folders->len;i++) {
folder = folders->pdata[i];
- if (CAMEL_CHECK_TYPE(folder, CAMEL_DISCO_FOLDER_TYPE)
+ if (G_TYPE_CHECK_INSTANCE_TYPE(folder, CAMEL_TYPE_DISCO_FOLDER)
&& (sync || ((CamelDiscoFolder *)folder)->offline_sync)) {
camel_disco_folder_prepare_for_offline((CamelDiscoFolder *)folder, "(match-all)", &x);
camel_exception_clear(&x);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
}
g_ptr_array_free(folders, TRUE);
}
camel_exception_clear(&x);
}
}
-
#include <camel/camel-store.h>
-#define CAMEL_DISCO_STORE_TYPE (camel_disco_store_get_type ())
-#define CAMEL_DISCO_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DISCO_STORE_TYPE, CamelDiscoStore))
-#define CAMEL_DISCO_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_STORE_TYPE, CamelDiscoStoreClass))
-#define CAMEL_IS_DISCO_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_DISCO_STORE \
+ (camel_disco_store_get_type ())
+#define CAMEL_DISCO_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_DISCO_STORE, CamelDiscoStore))
+#define CAMEL_DISCO_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_DISCO_STORE, CamelDiscoStoreClass))
+#define CAMEL_IS_DISCO_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_DISCO_STORE))
+#define CAMEL_IS_DISCO_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_DISCO_STORE))
#define CAMEL_DISCO_STORE_GET_CLASS(obj) \
- ((CamelDiscoStoreClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_DISCO_STORE, CamelDiscoStoreClass))
G_BEGIN_DECLS
CamelException *ex);
};
-CamelType camel_disco_store_get_type (void);
+GType camel_disco_store_get_type (void);
/* Public methods */
CamelDiscoStoreStatus camel_disco_store_status (CamelDiscoStore *store);
/* an invalid pointer */
#define FOLDER_INVALID ((gpointer)~0)
+#define CAMEL_FILTER_DRIVER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_FILTER_DRIVER, CamelFilterDriverPrivate))
+
/* type of status for a log report */
enum filter_log_t {
FILTER_LOG_NONE,
ESExp *eval;
};
-#define CAMEL_FILTER_DRIVER_GET_PRIVATE(o) (((CamelFilterDriver *)(o))->priv)
-
static void camel_filter_driver_log (CamelFilterDriver *driver, enum filter_log_t status, const gchar *desc, ...);
static CamelFolder *open_folder (CamelFilterDriver *d, const gchar *folder_url);
{ "only-once", (ESExpFunc *) do_only_once, 0 }
};
-static CamelObjectClass *camel_filter_driver_parent;
+G_DEFINE_TYPE (CamelFilterDriver, camel_filter_driver, CAMEL_TYPE_OBJECT)
static void
free_hash_strings (gpointer key, gpointer value, gpointer data)
}
static void
-camel_filter_driver_finalize (CamelObject *obj)
+filter_driver_dispose (GObject *object)
{
- CamelFilterDriver *driver = (CamelFilterDriver *) obj;
- struct _CamelFilterDriverPrivate *p = CAMEL_FILTER_DRIVER_GET_PRIVATE (driver);
+ CamelFilterDriverPrivate *priv;
+
+ priv = CAMEL_FILTER_DRIVER_GET_PRIVATE (object);
+
+ if (priv->defaultfolder != NULL) {
+ camel_folder_thaw (priv->defaultfolder);
+ g_object_unref (priv->defaultfolder);
+ priv->defaultfolder = NULL;
+ }
+
+ if (priv->session != NULL) {
+ g_object_unref (priv->session);
+ priv->session = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_filter_driver_parent_class)->dispose (object);
+}
+
+static void
+filter_driver_finalize (GObject *object)
+{
+ CamelFilterDriverPrivate *priv;
struct _filter_rule *node;
+ priv = CAMEL_FILTER_DRIVER_GET_PRIVATE (object);
+
/* close all folders that were opened for appending */
- close_folders (driver);
- g_hash_table_destroy (p->folders);
+ close_folders (CAMEL_FILTER_DRIVER (object));
+ g_hash_table_destroy (priv->folders);
- g_hash_table_foreach (p->globals, free_hash_strings, driver);
- g_hash_table_destroy (p->globals);
+ g_hash_table_foreach (priv->globals, free_hash_strings, object);
+ g_hash_table_destroy (priv->globals);
- g_hash_table_foreach (p->only_once, free_hash_strings, driver);
- g_hash_table_destroy (p->only_once);
+ g_hash_table_foreach (priv->only_once, free_hash_strings, object);
+ g_hash_table_destroy (priv->only_once);
- e_sexp_unref(p->eval);
+ e_sexp_unref (priv->eval);
- if (p->defaultfolder) {
- camel_folder_thaw (p->defaultfolder);
- camel_object_unref (p->defaultfolder);
- }
-
- while ((node = (struct _filter_rule *)camel_dlist_remhead(&p->rules))) {
- g_free(node->match);
- g_free(node->action);
- g_free(node->name);
- g_free(node);
+ while ((node = (struct _filter_rule *) camel_dlist_remhead (&priv->rules))) {
+ g_free (node->match);
+ g_free (node->action);
+ g_free (node->name);
+ g_free (node);
}
- camel_object_unref (p->session);
-
- g_free (p);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_filter_driver_parent_class)->finalize (object);
}
static void
-camel_filter_driver_class_init (CamelFilterDriverClass *klass)
+camel_filter_driver_class_init (CamelFilterDriverClass *class)
{
- camel_filter_driver_parent = camel_type_get_global_classfuncs(camel_object_get_type());
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelFilterDriverPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = filter_driver_dispose;
+ object_class->finalize = filter_driver_finalize;
}
static void
-camel_filter_driver_init (CamelFilterDriver *obj)
+camel_filter_driver_init (CamelFilterDriver *filter_driver)
{
- struct _CamelFilterDriverPrivate *p;
- gint i;
+ gint ii;
- p = CAMEL_FILTER_DRIVER_GET_PRIVATE (obj) = g_malloc0 (sizeof (*p));
+ filter_driver->priv = CAMEL_FILTER_DRIVER_GET_PRIVATE (filter_driver);
- camel_dlist_init(&p->rules);
+ camel_dlist_init (&filter_driver->priv->rules);
+
+ filter_driver->priv->eval = e_sexp_new ();
- p->eval = e_sexp_new ();
/* Load in builtin symbols */
- for (i = 0; i < G_N_ELEMENTS (symbols); i++) {
- if (symbols[i].type == 1) {
- e_sexp_add_ifunction (p->eval, 0, symbols[i].name, (ESExpIFunc *)symbols[i].func, obj);
+ for (ii = 0; ii < G_N_ELEMENTS (symbols); ii++) {
+ if (symbols[ii].type == 1) {
+ e_sexp_add_ifunction (
+ filter_driver->priv->eval, 0,
+ symbols[ii].name, (ESExpIFunc *)
+ symbols[ii].func, filter_driver);
} else {
- e_sexp_add_function (p->eval, 0, symbols[i].name, symbols[i].func, obj);
+ e_sexp_add_function (
+ filter_driver->priv->eval, 0,
+ symbols[ii].name, symbols[ii].func,
+ filter_driver);
}
}
- p->globals = g_hash_table_new (g_str_hash, g_str_equal);
-
- p->folders = g_hash_table_new (g_str_hash, g_str_equal);
+ filter_driver->priv->globals =
+ g_hash_table_new (g_str_hash, g_str_equal);
- p->only_once = g_hash_table_new (g_str_hash, g_str_equal);
-}
-
-CamelType
-camel_filter_driver_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_TYPE_OBJECT,
- "CamelFilterDriver",
- sizeof (CamelFilterDriver),
- sizeof (CamelFilterDriverClass),
- (CamelObjectClassInitFunc) camel_filter_driver_class_init,
- NULL,
- (CamelObjectInitFunc) camel_filter_driver_init,
- (CamelObjectFinalizeFunc) camel_filter_driver_finalize);
- }
+ filter_driver->priv->folders =
+ g_hash_table_new (g_str_hash, g_str_equal);
- return type;
+ filter_driver->priv->only_once =
+ g_hash_table_new (g_str_hash, g_str_equal);
}
/**
{
CamelFilterDriver *d;
- d = (CamelFilterDriver *)camel_object_new(camel_filter_driver_get_type());
- d->priv->session = camel_object_ref (session);
+ d = g_object_new (CAMEL_TYPE_FILTER_DRIVER, NULL);
+ d->priv->session = g_object_ref (session);
return d;
}
if (p->defaultfolder) {
camel_folder_thaw (p->defaultfolder);
- camel_object_unref (p->defaultfolder);
+ g_object_unref (p->defaultfolder);
}
p->defaultfolder = def;
if (p->defaultfolder) {
camel_folder_freeze (p->defaultfolder);
- camel_object_ref (p->defaultfolder);
+ g_object_ref (p->defaultfolder);
}
}
stream = camel_stream_fs_new_with_fd (pipe_to_child);
if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (p->message), stream) == -1) {
- camel_object_unref (stream);
+ g_object_unref (stream);
close (pipe_from_child);
goto wait;
}
if (camel_stream_flush (stream) == -1) {
- camel_object_unref (stream);
+ g_object_unref (stream);
close (pipe_from_child);
goto wait;
}
- camel_object_unref (stream);
+ g_object_unref (stream);
stream = camel_stream_fs_new_with_fd (pipe_from_child);
mem = camel_stream_mem_new ();
if (camel_stream_write_to_stream (stream, mem) == -1) {
- camel_object_unref (stream);
- camel_object_unref (mem);
+ g_object_unref (stream);
+ g_object_unref (mem);
goto wait;
}
- camel_object_unref (stream);
+ g_object_unref (stream);
camel_stream_reset (mem);
parser = camel_mime_parser_new ();
camel_mime_parser_init_with_stream (parser, mem);
camel_mime_parser_scan_from (parser, FALSE);
- camel_object_unref (mem);
+ g_object_unref (mem);
message = camel_mime_message_new ();
if (camel_mime_part_construct_from_parser ((CamelMimePart *) message, parser) == -1) {
_("Invalid message stream received from %s: %s"),
argv[0]->value.string,
g_strerror (camel_mime_parser_errno (parser)));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
} else {
- camel_object_unref (p->message);
+ g_object_unref (p->message);
p->message = message;
p->modified = TRUE;
}
- camel_object_unref (parser);
+ g_object_unref (parser);
wait:
context = g_main_context_new ();
if (folder != FOLDER_INVALID) {
camel_folder_sync (folder, FALSE, camel_exception_is_set(p->ex)?NULL : p->ex);
camel_folder_thaw (folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
report_status(driver, CAMEL_FILTER_STATUS_PROGRESS, g_hash_table_size(p->folders)* 100 / p->closed, _("Syncing folders"));
if (camel_mime_part_construct_from_parser (mime_part, mp) == -1) {
camel_exception_set (ex, (errno==EINTR)?CAMEL_EXCEPTION_USER_CANCEL:CAMEL_EXCEPTION_SYSTEM, _("Cannot open message"));
report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Failed on message %d"), i);
- camel_object_unref (message);
+ g_object_unref (message);
goto fail;
}
status = camel_filter_driver_filter_message (
driver, message, info, NULL, NULL, source_url,
original_source_url ? original_source_url : source_url, ex);
- camel_object_unref (message);
+ g_object_unref (message);
if (camel_exception_is_set (ex) || status == -1) {
report_status (
driver, CAMEL_FILTER_STATUS_END, 100,
if (fd != -1)
close (fd);
if (mp)
- camel_object_unref (mp);
+ g_object_unref (mp);
return ret;
}
CamelMimeMessage *message;
if (p->message) {
- message = camel_object_ref (p->message);
+ message = g_object_ref (p->message);
} else {
const gchar *uid;
struct _camel_header_raw *h;
if (message) {
- camel_object_ref (message);
+ g_object_ref (message);
} else {
message = camel_folder_get_message (source, uid, ex);
if (!message)
uid = camel_message_info_uid (info);
if (message)
- camel_object_ref (message);
+ g_object_ref (message);
}
p->ex = ex;
}
if (p->message)
- camel_object_unref (p->message);
+ g_object_unref (p->message);
if (freeinfo)
camel_message_info_free (info);
camel_filter_driver_log (driver, FILTER_LOG_END, NULL);
if (p->message)
- camel_object_unref (p->message);
+ g_object_unref (p->message);
if (freeinfo)
camel_message_info_free (info);
#include <camel/camel-folder.h>
#include <camel/camel-uid-cache.h>
-#define CAMEL_FILTER_DRIVER_TYPE (camel_filter_driver_get_type ())
-#define CAMEL_FILTER_DRIVER(obj) CAMEL_CHECK_CAST (obj, CAMEL_FILTER_DRIVER_TYPE, CamelFilterDriver)
-#define CAMEL_FILTER_DRIVER_CLASS(klass) CAMEL__CHECK_CLASS_CAST (klass, CAMEL_FILTER_DRIVER_TYPE, CamelFilterDriverClass)
-#define CAMEL_IS_FILTER_DRIVER(obj) CAMEL_CHECK_TYPE (obj, CAMEL_FILTER_DRIVER_TYPE)
+/* Standard GObject macros */
+#define CAMEL_TYPE_FILTER_DRIVER \
+ (camel_filter_driver_get_type ())
+#define CAMEL_FILTER_DRIVER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_FILTER_DRIVER, CamelFilterDriver))
+#define CAMEL_FILTER_DRIVER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_FILTER_DRIVER, CamelFilterDriverClass)
+#define CAMEL_IS_FILTER_DRIVER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_FILTER_DRIVER))
+#define CAMEL_IS_FILTER_DRIVER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_FILTER_DRIVER))
+#define CAMEL_FILTER_DRIVER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_FILTER_DRIVER, CamelFilterDriverClass))
G_BEGIN_DECLS
typedef void (CamelFilterPlaySoundFunc) (CamelFilterDriver *driver, const gchar *filename, gpointer data);
typedef void (CamelFilterSystemBeepFunc) (CamelFilterDriver *driver, gpointer data);
-CamelType camel_filter_driver_get_type (void);
+GType camel_filter_driver_get_type (void);
CamelFilterDriver *camel_filter_driver_new (struct _CamelSession *);
/* modifiers */
camel_data_wrapper_write_to_stream (
CAMEL_DATA_WRAPPER (message), stream);
camel_stream_flush (stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
context = g_main_context_new ();
child_watch_data.loop = g_main_loop_new (context, FALSE);
e_sexp_unref (sexp);
if (fms.message)
- camel_object_unref (fms.message);
+ g_object_unref (fms.message);
return retval;
error:
if (fms.message)
- camel_object_unref (fms.message);
+ g_object_unref (fms.message);
e_sexp_unref (sexp);
#define r(x)
#define dd(x) if (camel_debug("search")) x
+#define CAMEL_FOLDER_SEARCH_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_FOLDER_SEARCH, CamelFolderSearchPrivate))
+
struct _CamelFolderSearchPrivate {
CamelException *ex;
GHashTable *threads_hash;
};
-#define _PRIVATE(o) (((CamelFolderSearch *)(o))->priv)
-
static ESExpResult *search_not(struct _ESExp *f, gint argc, struct _ESExpResult **argv, CamelFolderSearch *search);
static ESExpResult *search_header_contains(struct _ESExp *f, gint argc, struct _ESExpResult **argv, CamelFolderSearch *search);
static gint read_uid_callback (gpointer ref, gint ncol, gchar ** cols, gchar **name);
-static CamelObjectClass *camel_folder_search_parent;
+G_DEFINE_TYPE (CamelFolderSearch, camel_folder_search, CAMEL_TYPE_OBJECT)
static void
-folder_search_finalize (CamelObject *obj)
+folder_search_dispose (GObject *object)
{
- CamelFolderSearch *search = (CamelFolderSearch *)obj;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(obj);
+ CamelFolderSearch *search = CAMEL_FOLDER_SEARCH (object);
- if (search->sexp)
- e_sexp_unref(search->sexp);
+ if (search->sexp != NULL) {
+ e_sexp_unref (search->sexp);
+ search->sexp = NULL;
+ }
- g_free(search->last_search);
- g_free(p);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_folder_search_parent_class)->dispose (object);
+}
+
+static void
+folder_search_finalize (GObject *object)
+{
+ CamelFolderSearch *search = CAMEL_FOLDER_SEARCH (object);
+
+ g_free (search->last_search);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_folder_search_parent_class)->finalize (object);
}
static void
camel_folder_search_class_init (CamelFolderSearchClass *class)
{
- camel_folder_search_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
- class->not = search_not;
+ g_type_class_add_private (class, sizeof (CamelFolderSearchPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = folder_search_dispose;
+ object_class->finalize = folder_search_finalize;
+ class->not = search_not;
class->match_all = search_match_all;
class->match_threads = search_match_threads;
class->body_contains = search_body_contains;
}
static void
-camel_folder_search_init (CamelFolderSearch *obj)
+camel_folder_search_init (CamelFolderSearch *search)
{
- struct _CamelFolderSearchPrivate *p;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-
- obj->sexp = e_sexp_new();
-}
-
-CamelType
-camel_folder_search_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelFolderSearch",
- sizeof (CamelFolderSearch),
- sizeof (CamelFolderSearchClass),
- (CamelObjectClassInitFunc) camel_folder_search_class_init,
- NULL,
- (CamelObjectInitFunc) camel_folder_search_init,
- (CamelObjectFinalizeFunc) folder_search_finalize);
- }
-
- return type;
+ search->priv = CAMEL_FOLDER_SEARCH_GET_PRIVATE (search);
+ search->sexp = e_sexp_new();
}
static struct {
/* c is sure messy sometimes */
func = *((gpointer *)(((gchar *)class)+builtins[i].offset));
if (func == NULL && builtins[i].flags&1) {
- g_warning("Search class doesn't implement '%s' method: %s", builtins[i].name, camel_type_to_name(CAMEL_OBJECT_GET_CLASS(search)));
+ g_warning("Search class doesn't implement '%s' method: %s", builtins[i].name, G_OBJECT_TYPE_NAME (search));
func = (gpointer)search_dummy;
}
if (func != NULL) {
{
CamelFolderSearch *new;
- new = CAMEL_FOLDER_SEARCH (camel_object_new (camel_folder_search_get_type ()));
+ new = g_object_new (CAMEL_TYPE_FOLDER_SEARCH, NULL);
camel_folder_search_construct(new);
return new;
camel_folder_search_set_body_index(CamelFolderSearch *search, CamelIndex *index)
{
if (search->body_index)
- camel_object_unref (search->body_index);
+ g_object_unref (search->body_index);
search->body_index = index;
if (index)
- camel_object_ref (index);
+ g_object_ref (index);
}
/**
GPtrArray *matches;
gint i;
GHashTable *results;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(search);
+ CamelFolderSearchPrivate *p = search->priv;
p->ex = ex;
GHashTable *results;
guint32 count = 0;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(search);
+ CamelFolderSearchPrivate *p = search->priv;
g_assert(search->folder);
gchar *sql_query, *tmp, *tmp1;
GHashTable *results;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(search);
+ CamelFolderSearchPrivate *p = search->priv;
g_assert(search->folder);
}
if (message)
- camel_object_unref (message);
+ g_object_unref (message);
}
/* TODO: else, find all matches */
} else
r->value.boolean = FALSE;
- camel_object_unref (msg);
+ g_object_unref (msg);
} else {
r = e_sexp_result_new (f, ESEXP_RES_ARRAY_PTR);
r->value.ptrarray = g_ptr_array_new();
} else
r->value.boolean = FALSE;
- camel_object_unref (msg);
+ g_object_unref (msg);
} else {
r = e_sexp_result_new (f, ESEXP_RES_ARRAY_PTR);
r->value.ptrarray = g_ptr_array_new();
if (nc) {
while (!truth && (name = camel_index_cursor_next(nc)))
truth = strcmp(name, uid) == 0;
- camel_object_unref (nc);
+ g_object_unref (nc);
}
}
}
- camel_object_unref (wc);
+ g_object_unref (wc);
}
return truth;
mask = (GPOINTER_TO_INT(g_hash_table_lookup(ht, name))) | (1<<i);
g_hash_table_insert(ht, (gchar *) camel_pstring_peek(name), GINT_TO_POINTER(mask));
}
- camel_object_unref (nc);
+ g_object_unref (nc);
}
}
}
}
- camel_object_unref (wc);
+ g_object_unref (wc);
lambdafoo.uids = result;
lambdafoo.count = (1<<words->len) - 1;
}
}
- camel_object_unref (stream);
+ g_object_unref (stream);
}
return truth;
if (msg) {
mask = 0;
truth = match_words_1message((CamelDataWrapper *)msg, words, &mask);
- camel_object_unref (msg);
+ g_object_unref (msg);
} else
camel_exception_clear (&x);
} else
r->value.boolean = FALSE;
- camel_object_unref (msg);
+ g_object_unref (msg);
} else {
regex_t pattern;
g_ptr_array_add (r->value.ptrarray, uid);
}
- camel_object_unref (message);
+ g_object_unref (message);
} else {
camel_exception_clear (&x);
}
#include <camel/camel-folder.h>
#include <camel/camel-index.h>
-#define CAMEL_FOLDER_SEARCH_TYPE (camel_folder_search_get_type ())
-#define CAMEL_FOLDER_SEARCH(obj) CAMEL_CHECK_CAST (obj, camel_folder_search_get_type (), CamelFolderSearch)
-#define CAMEL_FOLDER_SEARCH_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_folder_search_get_type (), CamelFolderSearchClass)
-#define CAMEL_IS_FOLDER_SEARCH(obj) CAMEL_CHECK_TYPE (obj, camel_folder_search_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_FOLDER_SEARCH \
+ (camel_folder_search_get_type ())
+#define CAMEL_FOLDER_SEARCH(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_FOLDER_SEARCH, CamelFolderSearch))
+#define CAMEL_FOLDER_SEARCH_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_FOLDER_SEARCH, CamelFolderSearchClass))
+#define CAMEL_IS_FOLDER_SEARCH(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_FOLDER_SEARCH))
+#define CAMEL_IS_FOLDER_SEARCH_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_FOLDER_SEARCH))
#define CAMEL_FOLDER_SEARCH_GET_CLASS(obj) \
- ((CamelFolderSearchClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_FOLDER_SEARCH, CamelFolderSearchClass))
G_BEGIN_DECLS
};
-CamelType camel_folder_search_get_type (void);
+GType camel_folder_search_get_type (void);
CamelFolderSearch *camel_folder_search_new (void);
void camel_folder_search_construct (CamelFolderSearch *search);
#include "camel-store.h"
#include "camel-vee-folder.h"
#include "camel-mime-part-utils.h"
-#include "camel-win32.h"
+
+#define CAMEL_FOLDER_SUMMARY_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_FOLDER_SUMMARY, CamelFolderSummaryPrivate))
/* Make 5 minutes as default cache drop */
#define SUMMARY_CACHE_DROP 300
#define CAMEL_FOLDER_SUMMARY_VERSION (14)
-#define CAMEL_FOLDER_SUMMARY_GET_PRIVATE(o) (((CamelFolderSummary *)(o))->priv)
-
#define META_SUMMARY_SUFFIX_LEN 5 /* strlen("-meta") */
#define EXTRACT_FIRST_STRING(val) len=strtoul (part, &part, 10); if (*part) part++; val=g_strndup (part, len); part+=len;
static CamelMessageContentInfo * summary_build_content_info(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimeParser *mp);
static CamelMessageContentInfo * summary_build_content_info_message(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimePart *object);
-static void camel_folder_summary_class_init (CamelFolderSummaryClass *class);
-static void camel_folder_summary_init (CamelFolderSummary *obj);
-static void camel_folder_summary_finalize (CamelObject *obj);
-
-static CamelObjectClass *camel_folder_summary_parent;
static CamelMessageInfo * message_info_from_uid (CamelFolderSummary *s, const gchar *uid);
+G_DEFINE_TYPE (CamelFolderSummary, camel_folder_summary, CAMEL_TYPE_OBJECT)
+
+static void
+free_o_name(gpointer key, gpointer value, gpointer data)
+{
+ g_object_unref (value);
+ g_free(key);
+}
+
static void
-camel_folder_summary_init (CamelFolderSummary *s)
+folder_summary_dispose (GObject *object)
{
- struct _CamelFolderSummaryPrivate *p;
+ CamelFolderSummaryPrivate *priv;
+
+ priv = CAMEL_FOLDER_SUMMARY_GET_PRIVATE (object);
- p = CAMEL_FOLDER_SUMMARY_GET_PRIVATE(s) = g_malloc0(sizeof(*p));
+ if (priv->filter_index != NULL) {
+ g_object_unref (priv->filter_index);
+ priv->filter_index = NULL;
+ }
- p->filter_charset = g_hash_table_new (camel_strcase_hash, camel_strcase_equal);
+ if (priv->filter_64 != NULL) {
+ g_object_unref (priv->filter_64);
+ priv->filter_64 = NULL;
+ }
- p->flag_cache = g_hash_table_new (g_str_hash, g_str_equal);
+ if (priv->filter_qp != NULL) {
+ g_object_unref (priv->filter_qp);
+ priv->filter_qp = NULL;
+ }
- s->message_info_chunks = NULL;
- s->content_info_chunks = NULL;
- p->need_preview = FALSE;
- p->preview_updates = g_hash_table_new (g_str_hash, g_str_equal);
+ if (priv->filter_uu != NULL) {
+ g_object_unref (priv->filter_uu);
+ priv->filter_uu = NULL;
+ }
- s->version = CAMEL_FOLDER_SUMMARY_VERSION;
- s->flags = 0;
- s->time = 0;
- s->nextuid = 1;
+ if (priv->filter_save != NULL) {
+ g_object_unref (priv->filter_save);
+ priv->filter_save = NULL;
+ }
- s->uids = g_ptr_array_new ();
- s->loaded_infos = g_hash_table_new (g_str_hash, g_str_equal);
+ if (priv->filter_html != NULL) {
+ g_object_unref (priv->filter_html);
+ priv->filter_html = NULL;
+ }
+
+ if (priv->filter_stream != NULL) {
+ g_object_unref (priv->filter_stream);
+ priv->filter_stream = NULL;
+ }
+
+ if (priv->index != NULL) {
+ g_object_unref (priv->index);
+ priv->index = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_folder_summary_parent_class)->dispose (object);
+}
+
+static void
+folder_summary_finalize (GObject *object)
+{
+ CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (object);
+
+ g_hash_table_destroy (summary->priv->flag_cache);
+ if (summary->timeout_handle)
+ g_source_remove (summary->timeout_handle);
+ /*camel_folder_summary_clear(s);*/
+ g_ptr_array_foreach (summary->uids, (GFunc) camel_pstring_free, NULL);
+ g_ptr_array_free (summary->uids, TRUE);
+ g_hash_table_destroy (summary->loaded_infos);
+
+ g_hash_table_foreach(summary->priv->filter_charset, free_o_name, NULL);
+ g_hash_table_destroy(summary->priv->filter_charset);
+
+ g_free(summary->summary_path);
+
+ /* Freeing memory occupied by meta-summary-header */
+ g_free(summary->meta_summary->path);
+ g_free(summary->meta_summary);
+
+ g_mutex_free(summary->priv->summary_lock);
+ g_mutex_free(summary->priv->io_lock);
+ g_mutex_free(summary->priv->filter_lock);
+ g_mutex_free(summary->priv->alloc_lock);
+ g_mutex_free(summary->priv->ref_lock);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_folder_summary_parent_class)->finalize (object);
+}
+
+static gint
+summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *record)
+{
+ io(printf("Loading header from db \n"));
+
+ s->version = record->version;
+
+ /* We may not worry, as we are setting a new standard here */
+#if 0
+ /* Legacy version check, before version 12 we have no upgrade knowledge */
+ if ((s->version > 0xff) && (s->version & 0xff) < 12) {
+ io(printf ("Summary header version mismatch"));
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (!(s->version < 0x100 && s->version >= 13))
+ io(printf("Loading legacy summary\n"));
+ else
+ io(printf("loading new-format summary\n"));
+#endif
+
+ s->flags = record->flags;
+ s->nextuid = record->nextuid;
+ s->time = record->time;
+ s->saved_count = record->saved_count;
+
+ s->unread_count = record->unread_count;
+ s->deleted_count = record->deleted_count;
+ s->junk_count = record->junk_count;
+ s->visible_count = record->visible_count;
+ s->junk_not_deleted_count = record->jnd_count;
+
+ return 0;
+}
+
+static CamelFIRecord *
+summary_header_to_db (CamelFolderSummary *s,
+ CamelException *ex)
+{
+ CamelFIRecord * record = g_new0 (CamelFIRecord, 1);
+ CamelDB *db;
+ gchar *table_name;
+
+ /* Though we are going to read, we do this during write, so lets use it that way */
+ db = s->folder->parent_store->cdb_w;
+ table_name = s->folder->full_name;
+
+ io(printf("Savining header to db\n"));
+
+ record->folder_name = table_name;
+
+ /* we always write out the current version */
+ record->version = CAMEL_FOLDER_SUMMARY_VERSION;
+ record->flags = s->flags;
+ record->nextuid = s->nextuid;
+ record->time = s->time;
+
+ /* FIXME: Ever heard of Constructors and initializing ? */
+ if (camel_db_count_total_message_info (db, table_name, &(record->saved_count), NULL))
+ record->saved_count = 0;
+ if (camel_db_count_junk_message_info (db, table_name, &(record->junk_count), NULL))
+ record->junk_count = 0;
+ if (camel_db_count_deleted_message_info (db, table_name, &(record->deleted_count), NULL))
+ record->deleted_count = 0;
+ if (camel_db_count_unread_message_info (db, table_name, &(record->unread_count), NULL))
+ record->unread_count = 0;
+ if (camel_db_count_visible_message_info (db, table_name, &(record->visible_count), NULL))
+ record->visible_count = 0;
+ if (camel_db_count_junk_not_deleted_message_info (db, table_name, &(record->jnd_count), NULL))
+ record->jnd_count = 0;
+
+ s->unread_count = record->unread_count;
+ s->deleted_count = record->deleted_count;
+ s->junk_count = record->junk_count;
+ s->visible_count = record->visible_count;
+ s->junk_not_deleted_count = record->jnd_count;
+
+ return record;
+}
+
+static CamelMessageInfo *
+message_info_from_db (CamelFolderSummary *s, CamelMIRecord *record)
+{
+ CamelMessageInfoBase *mi;
+ gint i;
+ gint count;
+ gchar *part, *label;
+
+ mi = (CamelMessageInfoBase *)camel_message_info_new(s);
+
+ io(printf("Loading message info from db\n"));
+
+ mi->flags = record->flags;
+ mi->size = record->size;
+ mi->date_sent = record->dsent;
+ mi->date_received = record->dreceived;
+
+ mi->uid = (gchar *) camel_pstring_strdup (record->uid);
+ mi->subject = (gchar *) camel_pstring_add (record->subject, FALSE);
+ mi->from = (gchar *) camel_pstring_add (record->from, FALSE);
+ mi->to = (gchar *) camel_pstring_add (record->to, FALSE);
+ mi->cc = (gchar *) camel_pstring_add (record->cc, FALSE);
+ mi->mlist = (gchar *) camel_pstring_add (record->mlist, FALSE);
+
+ /* Evolution itself doesn't yet use this, so we ignore it (saving some memory) */
+ mi->bodystructure = NULL;
+
+ /* Extract Message id & References */
+ mi->content = NULL;
+ part = record->part;
+ if (part) {
+ EXTRACT_FIRST_DIGIT (mi->message_id.id.part.hi)
+ EXTRACT_DIGIT (mi->message_id.id.part.lo)
+ EXTRACT_DIGIT (count)
+
+ if (count > 0) {
+ mi->references = g_malloc(sizeof(*mi->references) + ((count-1) * sizeof(mi->references->references[0])));
+ mi->references->size = count;
+ for (i=0;i<count;i++) {
+ EXTRACT_DIGIT (mi->references->references[i].id.part.hi)
+ EXTRACT_DIGIT (mi->references->references[i].id.part.lo)
+ }
+ } else
+ mi->references = NULL;
+
+ }
+
+ /* Extract User flags/labels */
+ part = record->labels;
+ if (part) {
+ label = part;
+ for (i=0;part[i];i++) {
+
+ if (part[i] == ' ') {
+ part[i] = 0;
+ camel_flag_set(&mi->user_flags, label, TRUE);
+ label = &(part[i+1]);
+ }
+ }
+ camel_flag_set(&mi->user_flags, label, TRUE);
+ }
+
+ /* Extract User tags */
+ part = record->usertags;
+ EXTRACT_FIRST_DIGIT (count)
+ for (i=0;i<count;i++) {
+ gint len;
+ gchar *name, *value;
+ EXTRACT_STRING (name)
+ EXTRACT_STRING (value)
+ camel_tag_set(&mi->user_tags, name, value);
+ g_free(name);
+ g_free(value);
+ }
+
+ return (CamelMessageInfo *) mi;
+}
+
+static CamelMIRecord *
+message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
+{
+ CamelMIRecord *record = g_new0(CamelMIRecord, 1);
+ CamelMessageInfoBase *mi = (CamelMessageInfoBase *) info;
+ GString *tmp;
+ CamelFlag *flag;
+ CamelTag *tag;
+ gint count, i;
+
+ /* Assume that we dont have to take care of DB Safeness. It will be done while doing the DB transaction */
+ record->uid = (gchar *) camel_pstring_strdup(camel_message_info_uid(mi));
+ record->flags = mi->flags;
+
+ record->read = ((mi->flags & (CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_JUNK))) ? 1 : 0;
+ record->deleted = mi->flags & CAMEL_MESSAGE_DELETED ? 1 : 0;
+ record->replied = mi->flags & CAMEL_MESSAGE_ANSWERED ? 1 : 0;
+ record->important = mi->flags & CAMEL_MESSAGE_FLAGGED ? 1 : 0;
+ record->junk = mi->flags & CAMEL_MESSAGE_JUNK ? 1 : 0;
+ record->dirty = mi->flags & CAMEL_MESSAGE_FOLDER_FLAGGED ? 1 : 0;
+ record->attachment = mi->flags & CAMEL_MESSAGE_ATTACHMENTS ? 1 : 0;
+
+ record->size = mi->size;
+ record->dsent = mi->date_sent;
+ record->dreceived = mi->date_received;
+
+ record->subject = (gchar *) camel_pstring_strdup(camel_message_info_subject (mi));
+ record->from = (gchar *) camel_pstring_strdup(camel_message_info_from (mi));
+ record->to = (gchar *) camel_pstring_strdup(camel_message_info_to (mi));
+ record->cc = (gchar *) camel_pstring_strdup(camel_message_info_cc (mi));
+ record->mlist = (gchar *) camel_pstring_strdup(camel_message_info_mlist (mi));
+
+ record->followup_flag = (gchar *) camel_pstring_strdup(camel_message_info_user_tag(info, "follow-up"));
+ record->followup_completed_on = (gchar *) camel_pstring_strdup(camel_message_info_user_tag(info, "completed-on"));
+ record->followup_due_by = (gchar *) camel_pstring_strdup(camel_message_info_user_tag(info, "due-by"));
+
+ record->bodystructure = mi->bodystructure ? g_strdup (mi->bodystructure) : NULL;
+
+ tmp = g_string_new (NULL);
+ if (mi->references) {
+ g_string_append_printf (tmp, "%lu %lu %lu", (gulong)mi->message_id.id.part.hi, (gulong)mi->message_id.id.part.lo, (gulong)mi->references->size);
+ for (i=0;i<mi->references->size;i++)
+ g_string_append_printf (tmp, " %lu %lu", (gulong)mi->references->references[i].id.part.hi, (gulong)mi->references->references[i].id.part.lo);
+ } else {
+ g_string_append_printf (tmp, "%lu %lu %lu", (gulong)mi->message_id.id.part.hi, (gulong)mi->message_id.id.part.lo, (gulong) 0);
+ }
+ record->part = tmp->str;
+ g_string_free (tmp, FALSE);
- p->summary_lock = g_mutex_new();
- p->io_lock = g_mutex_new();
- p->filter_lock = g_mutex_new();
- p->alloc_lock = g_mutex_new();
- p->ref_lock = g_mutex_new();
+ tmp = g_string_new (NULL);
+ flag = mi->user_flags;
+ while (flag) {
+ g_string_append_printf (tmp, "%s ", flag->name);
+ flag = flag->next;
+ }
+
+ /* Strip off the last space */
+ if (tmp->len)
+ tmp->len--;
+
+ record->labels = tmp->str;
+ g_string_free (tmp, FALSE);
- s->meta_summary = g_malloc0(sizeof(CamelFolderMetaSummary));
+ tmp = g_string_new (NULL);
+ count = camel_tag_list_size(&mi->user_tags);
+ g_string_append_printf (tmp, "%lu", (gulong)count);
+ tag = mi->user_tags;
+ while (tag) {
+ /* FIXME: Should we handle empty tags? Can it be empty? If it potential crasher ahead*/
+ g_string_append_printf (tmp, " %lu-%s %lu-%s", (gulong)strlen(tag->name), tag->name, (gulong)strlen(tag->value), tag->value);
+ tag = tag->next;
+ }
+ record->usertags = tmp->str;
+ g_string_free (tmp, FALSE);
+
+ return record;
+}
+
+static CamelMessageContentInfo *
+content_info_from_db(CamelFolderSummary *s, CamelMIRecord *record)
+{
+ CamelMessageContentInfo *ci;
+ gchar *type, *subtype;
+ guint32 count, i;
+ CamelContentType *ct;
+ gchar *part = record->cinfo;
+ gint len;
+
+ io(printf("Loading content info from db\n"));
+
+ if (!part)
+ return NULL;
+
+ ci = camel_folder_summary_content_info_new(s);
+ if (*part == ' ') part++; /* Move off the space in the record*/
+
+ EXTRACT_FIRST_STRING (type)
+ EXTRACT_STRING (subtype)
+ ct = camel_content_type_new(type, subtype);
+ g_free(type); /* can this be removed? */
+ g_free(subtype);
+ EXTRACT_DIGIT (count)
+
+ for (i = 0; i < count; i++) {
+ gchar *name, *value;
+ EXTRACT_STRING (name)
+ EXTRACT_STRING (value)
+
+ camel_content_type_set_param(ct, name, value);
+ /* TODO: do this so we dont have to double alloc/free */
+ g_free(name);
+ g_free(value);
+ }
+ ci->type = ct;
+
+ /* FIXME[disk-summary] move all these to camel pstring */
+ EXTRACT_STRING (ci->id);
+ EXTRACT_STRING (ci->description)
+ EXTRACT_STRING (ci->encoding)
+ EXTRACT_DIGIT (ci->size)
+
+ record->cinfo = part; /* Keep moving the cursor in the record */
+
+ ci->childs = NULL;
+
+ return ci;
+}
+
+static gint
+content_info_to_db(CamelFolderSummary *s, CamelMessageContentInfo *ci, CamelMIRecord *record)
+{
+ CamelContentType *ct;
+ struct _camel_header_param *hp;
+ GString *str = g_string_new (NULL);
+ gchar *oldr;
+
+ io(printf("Saving content info to db\n"));
+
+ ct = ci->type;
+ if (ct) {
+ if (ct->type)
+ g_string_append_printf (str, " %d-%s", (gint) strlen (ct->type), ct->type);
+ else
+ g_string_append_printf (str, " 0-");
+ if (ct->subtype)
+ g_string_append_printf (str, " %d-%s", (gint) strlen (ct->subtype), ct->subtype);
+ else
+ g_string_append_printf (str, " 0-");
+ g_string_append_printf (str, " %d", my_list_size((struct _node **)&ct->params));
+ hp = ct->params;
+ while (hp) {
+ if (hp->name)
+ g_string_append_printf (str, " %d-%s", (gint)strlen(hp->name), hp->name);
+ else
+ g_string_append_printf (str, " 0-");
+ if (hp->value)
+ g_string_append_printf (str, " %d-%s", (gint)strlen (hp->value), hp->value);
+ else
+ g_string_append_printf (str, " 0-");
+ hp = hp->next;
+ }
+ } else {
+ g_string_append_printf (str, " %d-", 0);
+ g_string_append_printf (str, " %d-", 0);
+ g_string_append_printf (str, " %d", 0);
+ }
+
+ if (ci->id)
+ g_string_append_printf (str, " %d-%s", (gint)strlen (ci->id), ci->id);
+ else
+ g_string_append_printf (str, " 0-");
+ if (ci->description)
+ g_string_append_printf (str, " %d-%s", (gint)strlen (ci->description), ci->description);
+ else
+ g_string_append_printf (str, " 0-");
+ if (ci->encoding)
+ g_string_append_printf (str, " %d-%s", (gint)strlen (ci->encoding), ci->encoding);
+ else
+ g_string_append_printf (str, " 0-");
+ g_string_append_printf (str, " %u", ci->size);
+
+ if (record->cinfo) {
+ oldr = record->cinfo;
+ record->cinfo = g_strconcat(oldr, str->str, NULL);
+ g_free (oldr); g_string_free (str, TRUE);
+ } else {
+ record->cinfo = str->str;
+ g_string_free (str, FALSE);
+ }
+
+ return 0;
+}
+
+static gint
+summary_header_save(CamelFolderSummary *s, FILE *out)
+{
+ gint unread = 0, deleted = 0, junk = 0, count, i;
+
+ fseek(out, 0, SEEK_SET);
+
+ io(printf("Savining header\n"));
+
+ /* we always write out the current version */
+ camel_file_util_encode_fixed_int32(out, CAMEL_FOLDER_SUMMARY_VERSION);
+ camel_file_util_encode_fixed_int32(out, s->flags);
+ camel_file_util_encode_fixed_int32(out, s->nextuid);
+ camel_file_util_encode_time_t(out, s->time);
+
+ count = camel_folder_summary_count(s);
+ for (i=0; i<count; i++) {
+ CamelMessageInfo *info = camel_folder_summary_index(s, i);
+ guint32 flags;
+
+ if (info == NULL)
+ continue;
+
+ flags = camel_message_info_flags(info);
+ if ((flags & CAMEL_MESSAGE_SEEN) == 0)
+ unread++;
+ if ((flags & CAMEL_MESSAGE_DELETED) != 0)
+ deleted++;
+ if ((flags & CAMEL_MESSAGE_JUNK) != 0)
+ junk++;
+
+ camel_message_info_free(info);
+ }
+
+ camel_file_util_encode_fixed_int32(out, count);
+ camel_file_util_encode_fixed_int32(out, unread);
+ camel_file_util_encode_fixed_int32(out, deleted);
+
+ return camel_file_util_encode_fixed_int32(out, junk);
+}
+
+static CamelMessageInfo *
+message_info_clone(CamelFolderSummary *s, const CamelMessageInfo *mi)
+{
+ CamelMessageInfoBase *to, *from = (CamelMessageInfoBase *)mi;
+ CamelFlag *flag;
+ CamelTag *tag;
+
+ to = (CamelMessageInfoBase *)camel_message_info_new(s);
+
+ to->flags = from->flags;
+ to->size = from->size;
+ to->date_sent = from->date_sent;
+ to->date_received = from->date_received;
+ to->refcount = 1;
+
+ /* NB: We don't clone the uid */
+
+ to->subject = camel_pstring_strdup(from->subject);
+ to->from = camel_pstring_strdup(from->from);
+ to->to = camel_pstring_strdup(from->to);
+ to->cc = camel_pstring_strdup(from->cc);
+ to->mlist = camel_pstring_strdup(from->mlist);
+ memcpy(&to->message_id, &from->message_id, sizeof(to->message_id));
+ to->preview = g_strdup (from->preview);
+ if (from->references) {
+ gint len = sizeof(*from->references) + ((from->references->size-1) * sizeof(from->references->references[0]));
+
+ to->references = g_malloc(len);
+ memcpy(to->references, from->references, len);
+ }
+
+ flag = from->user_flags;
+ while (flag) {
+ camel_flag_set(&to->user_flags, flag->name, TRUE);
+ flag = flag->next;
+ }
+
+ tag = from->user_tags;
+ while (tag) {
+ camel_tag_set(&to->user_tags, tag->name, tag->value);
+ tag = tag->next;
+ }
+
+ if (from->content) {
+ /* FIXME: copy content-infos */
+ }
+
+ return (CamelMessageInfo *)to;
+}
+
+static gconstpointer
+info_ptr(const CamelMessageInfo *mi, gint id)
+{
+ switch (id) {
+ case CAMEL_MESSAGE_INFO_SUBJECT:
+ return ((const CamelMessageInfoBase *)mi)->subject;
+ case CAMEL_MESSAGE_INFO_FROM:
+ return ((const CamelMessageInfoBase *)mi)->from;
+ case CAMEL_MESSAGE_INFO_TO:
+ return ((const CamelMessageInfoBase *)mi)->to;
+ case CAMEL_MESSAGE_INFO_CC:
+ return ((const CamelMessageInfoBase *)mi)->cc;
+ case CAMEL_MESSAGE_INFO_MLIST:
+ return ((const CamelMessageInfoBase *)mi)->mlist;
+ case CAMEL_MESSAGE_INFO_MESSAGE_ID:
+ return &((const CamelMessageInfoBase *)mi)->message_id;
+ case CAMEL_MESSAGE_INFO_REFERENCES:
+ return ((const CamelMessageInfoBase *)mi)->references;
+ case CAMEL_MESSAGE_INFO_USER_FLAGS:
+ return ((const CamelMessageInfoBase *)mi)->user_flags;
+ case CAMEL_MESSAGE_INFO_USER_TAGS:
+ return ((const CamelMessageInfoBase *)mi)->user_tags;
+ case CAMEL_MESSAGE_INFO_HEADERS:
+ return ((const CamelMessageInfoBase *)mi)->headers;
+ case CAMEL_MESSAGE_INFO_CONTENT:
+ return ((const CamelMessageInfoBase *)mi)->content;
+ case CAMEL_MESSAGE_INFO_PREVIEW:
+ return ((const CamelMessageInfoBase *)mi)->preview;
+ default:
+ g_return_val_if_reached (NULL);
+ }
+}
+
+static guint32
+info_uint32(const CamelMessageInfo *mi, gint id)
+{
+ switch (id) {
+ case CAMEL_MESSAGE_INFO_FLAGS:
+ return ((const CamelMessageInfoBase *)mi)->flags;
+ case CAMEL_MESSAGE_INFO_SIZE:
+ return ((const CamelMessageInfoBase *)mi)->size;
+ default:
+ g_return_val_if_reached (0);
+ }
+}
+
+static time_t
+info_time(const CamelMessageInfo *mi, gint id)
+{
+ switch (id) {
+ case CAMEL_MESSAGE_INFO_DATE_SENT:
+ return ((const CamelMessageInfoBase *)mi)->date_sent;
+ case CAMEL_MESSAGE_INFO_DATE_RECEIVED:
+ return ((const CamelMessageInfoBase *)mi)->date_received;
+ default:
+ g_return_val_if_reached (0);
+ }
+}
+
+static gboolean
+info_user_flag(const CamelMessageInfo *mi, const gchar *id)
+{
+ return camel_flag_get(&((CamelMessageInfoBase *)mi)->user_flags, id);
+}
+
+static const gchar *
+info_user_tag(const CamelMessageInfo *mi, const gchar *id)
+{
+ return camel_tag_get(&((CamelMessageInfoBase *)mi)->user_tags, id);
+}
+
+static gboolean
+info_set_user_flag(CamelMessageInfo *info, const gchar *name, gboolean value)
+{
+ CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
+ gint res;
+
+ res = camel_flag_set(&mi->user_flags, name, value);
+
+ /* TODO: check this item is still in the summary first */
+ if (mi->summary && res && mi->summary->folder && mi->uid) {
+ CamelFolderChangeInfo *changes = camel_folder_change_info_new();
+
+ mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
+ mi->dirty = TRUE;
+ camel_folder_summary_touch(mi->summary);
+ camel_folder_change_info_change_uid(changes, camel_message_info_uid(info));
+ camel_object_trigger_event(mi->summary->folder, "folder_changed", changes);
+ camel_folder_change_info_free(changes);
+ }
+
+ return res;
+}
+
+static gboolean
+info_set_user_tag(CamelMessageInfo *info, const gchar *name, const gchar *value)
+{
+ CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
+ gint res;
+
+ res = camel_tag_set(&mi->user_tags, name, value);
+
+ if (mi->summary && res && mi->summary->folder && mi->uid) {
+ CamelFolderChangeInfo *changes = camel_folder_change_info_new();
+
+ mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
+ mi->dirty = TRUE;
+ camel_folder_summary_touch(mi->summary);
+ camel_folder_change_info_change_uid(changes, camel_message_info_uid(info));
+ camel_object_trigger_event(mi->summary->folder, "folder_changed", changes);
+ camel_folder_change_info_free(changes);
+ }
+
+ return res;
+}
+
+static gboolean
+info_set_flags(CamelMessageInfo *info, guint32 flags, guint32 set)
+{
+ guint32 old;
+ CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
+ gint read=0, deleted=0, junk=0;
+ /* TODO: locking? */
+
+ if (flags & CAMEL_MESSAGE_SEEN && ((set & CAMEL_MESSAGE_SEEN) != (mi->flags & CAMEL_MESSAGE_SEEN)))
+ { read = set & CAMEL_MESSAGE_SEEN ? 1 : -1; d(printf("Setting read as %d\n", set & CAMEL_MESSAGE_SEEN ? 1 : 0));}
+
+ if (flags & CAMEL_MESSAGE_DELETED && ((set & CAMEL_MESSAGE_DELETED) != (mi->flags & CAMEL_MESSAGE_DELETED)))
+ { deleted = set & CAMEL_MESSAGE_DELETED ? 1 : -1; d(printf("Setting deleted as %d\n", set & CAMEL_MESSAGE_DELETED ? 1 : 0));}
+
+ if (flags & CAMEL_MESSAGE_JUNK && ((set & CAMEL_MESSAGE_JUNK) != (mi->flags & CAMEL_MESSAGE_JUNK)))
+ { junk = set & CAMEL_MESSAGE_JUNK ? 1 : -1; d(printf("Setting junk as %d\n", set & CAMEL_MESSAGE_JUNK ? 1 : 0));}
+
+ old = mi->flags;
+ mi->flags = (old & ~flags) | (set & flags);
+ if (old != mi->flags) {
+ mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
+ mi->dirty = TRUE;
+ if (mi->summary)
+ camel_folder_summary_touch(mi->summary);
+ }
+
+ if (((old & ~CAMEL_MESSAGE_SYSTEM_MASK) == (mi->flags & ~CAMEL_MESSAGE_SYSTEM_MASK)) && !((set & CAMEL_MESSAGE_JUNK_LEARN) && !(set & CAMEL_MESSAGE_JUNK)))
+ return FALSE;
+
+ if (mi->summary) {
+ if (read && junk == 0 && !(mi->flags & CAMEL_MESSAGE_JUNK))
+ mi->summary->unread_count -= read;
+ else if (junk > 0)
+ mi->summary->unread_count -= (old & CAMEL_MESSAGE_SEEN) ? 0 : 1;
+ else if (junk < 0)
+ mi->summary->unread_count -= (old & CAMEL_MESSAGE_SEEN) ? 0 : -1;
+
+ if (deleted)
+ mi->summary->deleted_count += deleted;
+ if (junk)
+ mi->summary->junk_count += junk;
+ if (junk && !deleted)
+ mi->summary->junk_not_deleted_count += junk;
+ else if ((mi->flags & CAMEL_MESSAGE_JUNK) && deleted)
+ mi->summary->junk_not_deleted_count -= deleted;
+
+ if (((junk && !(mi->flags & CAMEL_MESSAGE_DELETED)))|| (deleted && !(mi->flags & CAMEL_MESSAGE_JUNK)) )
+ mi->summary->visible_count -= junk ? junk : deleted;
+ }
+ if (mi->uid)
+ g_hash_table_replace (CAMEL_FOLDER_SUMMARY_GET_PRIVATE(mi->summary)->flag_cache, (gchar *)mi->uid, GUINT_TO_POINTER(mi->flags));
+ if (mi->summary && mi->summary->folder && mi->uid) {
+ CamelFolderChangeInfo *changes = camel_folder_change_info_new();
+
+ camel_folder_change_info_change_uid(changes, camel_message_info_uid(info));
+ camel_object_trigger_event(mi->summary->folder, "folder_changed", changes);
+ camel_folder_change_info_free(changes);
+ }
+
+ d(printf("%d %d %d %d %d\n", mi->summary->unread_count, mi->summary->deleted_count, mi->summary->junk_count, mi->summary->junk_not_deleted_count, mi->summary->visible_count));
+ return TRUE;
+}
+
+static void
+camel_folder_summary_class_init (CamelFolderSummaryClass *class)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelFolderSummaryPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = folder_summary_dispose;
+ object_class->finalize = folder_summary_finalize;
+
+ class->message_info_size = sizeof (CamelMessageInfoBase);
+ class->content_info_size = sizeof (CamelMessageContentInfo);
+
+ class->summary_header_load = summary_header_load;
+ class->summary_header_save = summary_header_save;
+
+ class->summary_header_from_db = summary_header_from_db;
+ class->summary_header_to_db = summary_header_to_db;
+ class->message_info_from_db = message_info_from_db;
+ class->message_info_to_db = message_info_to_db;
+ class->content_info_from_db = content_info_from_db;
+ class->content_info_to_db = content_info_to_db;
+
+ class->message_info_new_from_header = message_info_new_from_header;
+ class->message_info_new_from_parser = message_info_new_from_parser;
+ class->message_info_new_from_message = message_info_new_from_message;
+ class->message_info_load = message_info_load;
+ class->message_info_save = message_info_save;
+ class->meta_message_info_save = meta_message_info_save;
+ class->message_info_free = message_info_free;
+ class->message_info_clone = message_info_clone;
+ class->message_info_from_uid = message_info_from_uid;
+
+ class->content_info_new_from_header = content_info_new_from_header;
+ class->content_info_new_from_parser = content_info_new_from_parser;
+ class->content_info_new_from_message = content_info_new_from_message;
+ class->content_info_load = content_info_load;
+ class->content_info_save = content_info_save;
+ class->content_info_free = content_info_free;
+
+ class->next_uid_string = next_uid_string;
+
+ class->info_ptr = info_ptr;
+ class->info_uint32 = info_uint32;
+ class->info_time = info_time;
+ class->info_user_flag = info_user_flag;
+ class->info_user_tag = info_user_tag;
+
+#if 0
+ class->info_set_string = info_set_string;
+ class->info_set_uint32 = info_set_uint32;
+ class->info_set_time = info_set_time;
+ class->info_set_ptr = info_set_ptr;
+#endif
+ class->info_set_user_flag = info_set_user_flag;
+ class->info_set_user_tag = info_set_user_tag;
- /* Default is 20, any implementor having UIDs that has length
- exceeding 20, has to override this value
- */
- s->meta_summary->uid_len = 20;
- s->cache_load_time = 0;
- s->timeout_handle = 0;
-}
+ class->info_set_flags = info_set_flags;
-static void free_o_name(gpointer key, gpointer value, gpointer data)
-{
- camel_object_unref (value);
- g_free(key);
}
static void
-camel_folder_summary_finalize (CamelObject *obj)
+camel_folder_summary_init (CamelFolderSummary *summary)
{
- struct _CamelFolderSummaryPrivate *p;
- CamelFolderSummary *s = (CamelFolderSummary *)obj;
-
- p = CAMEL_FOLDER_SUMMARY_GET_PRIVATE(obj);
- g_hash_table_destroy (p->flag_cache);
- if (s->timeout_handle)
- g_source_remove (s->timeout_handle);
- /*camel_folder_summary_clear(s);*/
- g_ptr_array_foreach (s->uids, (GFunc) camel_pstring_free, NULL);
- g_ptr_array_free (s->uids, TRUE);
- g_hash_table_destroy (s->loaded_infos);
+ summary->priv = CAMEL_FOLDER_SUMMARY_GET_PRIVATE (summary);
- g_hash_table_foreach(p->filter_charset, free_o_name, NULL);
- g_hash_table_destroy(p->filter_charset);
+ summary->priv->filter_charset = g_hash_table_new (
+ camel_strcase_hash, camel_strcase_equal);
- g_free(s->summary_path);
-
- if (p->filter_index)
- camel_object_unref (p->filter_index);
- if (p->filter_64)
- camel_object_unref (p->filter_64);
- if (p->filter_qp)
- camel_object_unref (p->filter_qp);
- if (p->filter_uu)
- camel_object_unref (p->filter_uu);
- if (p->filter_save)
- camel_object_unref (p->filter_save);
- if (p->filter_html)
- camel_object_unref (p->filter_html);
-
- if (p->filter_stream)
- camel_object_unref (p->filter_stream);
- if (p->index)
- camel_object_unref (p->index);
+ summary->priv->flag_cache = g_hash_table_new (g_str_hash, g_str_equal);
- /* Freeing memory occupied by meta-summary-header */
- g_free(s->meta_summary->path);
- g_free(s->meta_summary);
+ summary->message_info_chunks = NULL;
+ summary->content_info_chunks = NULL;
+ summary->priv->need_preview = FALSE;
+ summary->priv->preview_updates = g_hash_table_new (g_str_hash, g_str_equal);
+#if defined (DOESTRV) || defined (DOEPOOLV)
+ summary->message_info_strings = CAMEL_MESSAGE_INFO_LAST;
+#endif
- g_mutex_free(p->summary_lock);
- g_mutex_free(p->io_lock);
- g_mutex_free(p->filter_lock);
- g_mutex_free(p->alloc_lock);
- g_mutex_free(p->ref_lock);
+ summary->version = CAMEL_FOLDER_SUMMARY_VERSION;
+ summary->flags = 0;
+ summary->time = 0;
+ summary->nextuid = 1;
- g_free(p);
-}
+ summary->uids = g_ptr_array_new ();
+ summary->loaded_infos = g_hash_table_new (g_str_hash, g_str_equal);
-CamelType
-camel_folder_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
+ summary->priv->summary_lock = g_mutex_new();
+ summary->priv->io_lock = g_mutex_new();
+ summary->priv->filter_lock = g_mutex_new();
+ summary->priv->alloc_lock = g_mutex_new();
+ summary->priv->ref_lock = g_mutex_new();
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelFolderSummary",
- sizeof (CamelFolderSummary),
- sizeof (CamelFolderSummaryClass),
- (CamelObjectClassInitFunc) camel_folder_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_folder_summary_init,
- (CamelObjectFinalizeFunc) camel_folder_summary_finalize);
- }
+ summary->meta_summary = g_malloc0(sizeof(CamelFolderMetaSummary));
- return type;
+ /* Default is 20, any implementor having UIDs that has length
+ exceeding 20, has to override this value
+ */
+ summary->meta_summary->uid_len = 20;
+ summary->cache_load_time = 0;
+ summary->timeout_handle = 0;
}
/**
CamelFolderSummary *
camel_folder_summary_new (struct _CamelFolder *folder)
{
- CamelFolderSummary *new = CAMEL_FOLDER_SUMMARY ( camel_object_new (camel_folder_summary_get_type ()));
+ CamelFolderSummary *new;
+ new = g_object_new (CAMEL_TYPE_FOLDER_SUMMARY, NULL);
new->folder = folder;
return new;
struct _CamelFolderSummaryPrivate *p = CAMEL_FOLDER_SUMMARY_GET_PRIVATE(s);
if (p->index)
- camel_object_unref (p->index);
+ g_object_unref (p->index);
p->index = index;
if (index)
- camel_object_ref (index);
+ g_object_ref (index);
}
/**
data.double_ref = TRUE;
data.add = FALSE;
- ret = camel_db_read_message_info_record_with_uid (cdb, folder_name, uid, &data, camel_read_mir_callback, &ex);
+ ret = camel_db_read_message_info_record_with_uid (
+ cdb, folder_name, uid, &data,
+ camel_read_mir_callback, &ex);
if (ret != 0) {
camel_exception_clear (&ex);
return NULL;
* Returns: the summary item, or %NULL if the uid @uid is not available
**/
CamelMessageInfo *
-camel_folder_summary_uid (CamelFolderSummary *s, const gchar *uid)
+camel_folder_summary_uid (CamelFolderSummary *summary,
+ const gchar *uid)
{
- if (!s)
- return NULL;
- return ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_from_uid(s, uid);
+ CamelFolderSummaryClass *class;
+
+ g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL);
+ g_return_val_if_fail (uid != NULL, NULL);
+
+ class = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary);
+ g_return_val_if_fail (class->message_info_from_uid != NULL, NULL);
+
+ return class->message_info_from_uid (summary, uid);
}
/**
* This string must be freed by the caller.
**/
gchar *
-camel_folder_summary_next_uid_string(CamelFolderSummary *s)
+camel_folder_summary_next_uid_string (CamelFolderSummary *summary)
{
- return ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->next_uid_string(s);
+ CamelFolderSummaryClass *class;
+
+ g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL);
+
+ class = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary);
+ g_return_val_if_fail (class->next_uid_string != NULL, NULL);
+
+ return class->next_uid_string (summary);
}
static CamelMessageContentInfo *
CamelMessageContentInfo *ci, *pci;
gchar *part;
- ci = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_from_db (s, mir);
+ ci = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_from_db (s, mir);
if (ci == NULL)
return NULL;
part = mir->cinfo;
guint32 count;
CamelMessageContentInfo *ci, *part;
- ci = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_load(s, in);
+ ci = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_load (s, in);
if (ci == NULL)
return NULL;
static void remove_cache_end (CamelSession *session, CamelSessionThreadMsg *msg)
{
struct _folder_summary_free_msg *m = (struct _folder_summary_free_msg *)msg;
- camel_object_unref (m->summary);
+ g_object_unref (m->summary);
}
static CamelSessionThreadOps remove_timeout_ops = {
return TRUE;
m = camel_session_thread_msg_new(session, &remove_timeout_ops, sizeof(*m));
- m->summary = camel_object_ref (s);
+ m->summary = g_object_ref (s);
camel_session_thread_queue(session, &m->msg, 0);
return TRUE;
* Since: 2.24
**/
gint
-camel_folder_summary_reload_from_db (CamelFolderSummary *s, CamelException *ex)
+camel_folder_summary_reload_from_db (CamelFolderSummary *s,
+ CamelException *ex)
{
CamelDB *cdb;
gchar *folder_name;
* Since: 2.28
**/
void
-camel_folder_summary_ensure_infos_loaded (CamelFolderSummary *s, gint at_least, CamelException *ex)
+camel_folder_summary_ensure_infos_loaded (CamelFolderSummary *s,
+ gint at_least,
+ CamelException *ex)
{
guint loaded, known;
* Since: 2.24
**/
gint
-camel_folder_summary_load_from_db (CamelFolderSummary *s, CamelException *ex)
+camel_folder_summary_load_from_db (CamelFolderSummary *s,
+ CamelException *ex)
{
CamelDB *cdb;
gchar *folder_name;
camel_exception_init (&ex2);
- ret = camel_db_get_folder_uids_flags (cdb, folder_name, s->sort_by, s->collate, s->uids, p->flag_cache, &ex2);
+ ret = camel_db_get_folder_uids_flags (
+ cdb, folder_name, s->sort_by, s->collate,
+ s->uids, p->flag_cache, &ex2);
if (camel_exception_is_set (&ex2) && camel_exception_get_description (&ex2) &&
strstr (camel_exception_get_description (&ex2), "no such table") != NULL) {
}
camel_folder_summary_unlock (s, CFS_SUMMARY_LOCK);
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_from_db (s, mir);
+ info = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_from_db (s, mir);
if (info) {
return -1;
camel_folder_summary_lock (s, CFS_IO_LOCK);
- if ( ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_load(s, in) == -1)
+
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_load (s, in) == -1)
goto error;
/* now read in each message ... */
for (i=0;i<s->saved_count;i++) {
- mi = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_load(s, in);
+ mi = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_load (s, in);
if (mi == NULL)
goto error;
if (in == NULL)
return -1;
- if ( ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_load(s, in) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_load (s, in) == -1)
goto error;
/* now read in each message ... */
for (i=0;i<s->saved_count;i++) {
CamelTag *tag;
- mi = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_load(s, in);
+ mi = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_load (s, in);
if (mi == NULL)
goto error;
if (fclose (in) != 0)
return -1;
- record = (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_to_db (s, &ex));
+ record = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_to_db (s, NULL);
if (!record) {
return -1;
}
CamelMessageContentInfo *part;
gchar *oldr;
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->content_info_to_db (s, ci, record) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_to_db (s, ci, record) == -1)
return -1;
oldr = record->cinfo;
{
CamelMessageContentInfo *part;
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->content_info_save (s, out, ci) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_save (s, out, ci) == -1)
return -1;
if (camel_file_util_encode_uint32 (out, my_list_size ((struct _node **)&ci->childs)) == -1)
if (!args->migration && !mi->dirty)
return;
- mir = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_to_db (s, (CamelMessageInfo *)mi);
+ mir = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_to_db (s, (CamelMessageInfo *) mi);
if (mir && s->build_content) {
if (perform_content_info_save_to_db (s, ((CamelMessageInfoBase *)mi)->content, mir) == -1) {
}
static gint
-save_message_infos_to_db (CamelFolderSummary *s, gboolean fresh_mirs, CamelException *ex)
+save_message_infos_to_db (CamelFolderSummary *s,
+ gboolean fresh_mirs,
+ CamelException *ex)
{
CamelDB *cdb = s->folder->parent_store->cdb_w;
gchar *folder_name;
* Since: 2.24
**/
gint
-camel_folder_summary_save_to_db (CamelFolderSummary *s, CamelException *ex)
+camel_folder_summary_save_to_db (CamelFolderSummary *s,
+ CamelException *ex)
{
CamelDB *cdb = s->folder->parent_store->cdb_w;
CamelFIRecord *record;
camel_db_end_transaction (cdb, ex);
- record = (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_to_db (s, ex));
+ record = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_to_db (s, ex);
if (!record) {
s->flags |= CAMEL_SUMMARY_DIRTY;
return -1;
* Since: 2.24
**/
gint
-camel_folder_summary_header_save_to_db (CamelFolderSummary *s, CamelException *ex)
+camel_folder_summary_header_save_to_db (CamelFolderSummary *s,
+ CamelException *ex)
{
CamelDB *cdb = s->folder->parent_store->cdb_w;
CamelFIRecord *record;
d(printf ("\ncamel_folder_summary_header_save_to_db called \n"));
- record = (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_to_db (s, ex));
+ record = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_to_db (s, ex);
if (!record) {
return -1;
}
camel_folder_summary_lock (s, CFS_IO_LOCK);
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_save(s, out) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_save (s, out) == -1)
goto exception;
if (summary_meta_header_save(s, out_meta) == -1)
count = s->messages->len;
for (i = 0; i < count; i++) {
mi = s->messages->pdata[i];
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->meta_message_info_save (s, out_meta, out, mi) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->meta_message_info_save (s, out_meta, out, mi) == -1)
goto exception;
- if (((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS (s)))->message_info_save (s, out, mi) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_save (s, out, mi) == -1)
goto exception;
if (s->build_content) {
* Since: 2.24
**/
gint
-camel_folder_summary_header_load_from_db (CamelFolderSummary *s, CamelStore *store, const gchar *folder_name, CamelException *ex)
+camel_folder_summary_header_load_from_db (CamelFolderSummary *s,
+ CamelStore *store,
+ const gchar *folder_name,
+ CamelException *ex)
{
CamelDB *cdb;
CamelFIRecord *record;
camel_db_read_folder_info_record (cdb, folder_name, &record, ex);
if (record) {
- if ( ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_from_db (s, record) == -1)
+ if (CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_from_db (s, record) == -1)
ret = -1;
} else {
ret = -1;
}
camel_folder_summary_lock (s, CFS_IO_LOCK);
- ret = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_load(s, in);
+
+ ret = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->summary_header_load (s, in);
ret = summary_meta_header_load(s, in_meta);
+
camel_folder_summary_unlock (s, CFS_IO_LOCK);
fclose(in);
* #camel_message_info_free
**/
CamelMessageInfo *
-camel_folder_summary_info_new_from_header(CamelFolderSummary *s, struct _camel_header_raw *h)
+camel_folder_summary_info_new_from_header (CamelFolderSummary *summary,
+ struct _camel_header_raw *h)
{
- return ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new_from_header(s, h);
+ CamelFolderSummaryClass *class;
+
+ g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL);
+
+ class = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary);
+ g_return_val_if_fail (class->message_info_new_from_header != NULL, NULL);
+
+ return class->message_info_new_from_header (summary, h);
}
/**
start = camel_mime_parser_tell(mp);
if (camel_mime_parser_step(mp, &buffer, &len) != CAMEL_MIME_PARSER_STATE_EOF) {
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new_from_parser(s, mp);
+ info = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_new_from_parser (s, mp);
camel_mime_parser_unstep(mp);
p->filter_index = camel_mime_filter_index_new (p->index);
camel_index_delete_name(p->index, camel_message_info_uid(info));
name = camel_index_add_name(p->index, camel_message_info_uid(info));
- camel_mime_filter_index_set_name (
- CAMEL_MIME_FILTER_INDEX (p->filter_index), name);
+ camel_mime_filter_index_set_name(CAMEL_MIME_FILTER_INDEX (p->filter_index), name);
}
/* always scan the content info, even if we dont save it */
if (name && p->index) {
camel_index_write_name(p->index, name);
- camel_object_unref (name);
+ g_object_unref (name);
camel_mime_filter_index_set_name (
CAMEL_MIME_FILTER_INDEX (p->filter_index), NULL);
}
struct _CamelFolderSummaryPrivate *p = CAMEL_FOLDER_SUMMARY_GET_PRIVATE(s);
CamelIndexName *name = NULL;
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new_from_message(s, msg, bodystructure);
+ info = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_new_from_message (s, msg, bodystructure);
/* assign a unique uid, this is slightly 'wrong' as we do not really
* know if we are going to store this in the summary, but we need it set for indexing */
CamelStream *null = camel_stream_null_new();
p->filter_stream = camel_stream_filter_new (null);
- camel_object_unref (null);
+ g_object_unref (null);
}
}
if (name) {
camel_index_write_name(p->index, name);
- camel_object_unref (name);
+ g_object_unref (name);
camel_mime_filter_index_set_name (
CAMEL_MIME_FILTER_INDEX (p->filter_index), NULL);
}
CamelMessageContentInfo *pw, *pn;
pw = ci->childs;
- ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_free(s, ci);
+ CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_free (s, ci);
while (pw) {
pn = pw->next;
camel_folder_summary_content_info_free(s, pw);
}
#endif
-static gint
-summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *record)
-{
- io(printf("Loading header from db \n"));
-
- s->version = record->version;
-
- /* We may not worry, as we are setting a new standard here */
-#if 0
- /* Legacy version check, before version 12 we have no upgrade knowledge */
- if ((s->version > 0xff) && (s->version & 0xff) < 12) {
- io(printf ("Summary header version mismatch"));
- errno = EINVAL;
- return -1;
- }
-
- if (!(s->version < 0x100 && s->version >= 13))
- io(printf("Loading legacy summary\n"));
- else
- io(printf("loading new-format summary\n"));
-#endif
-
- s->flags = record->flags;
- s->nextuid = record->nextuid;
- s->time = record->time;
- s->saved_count = record->saved_count;
-
- s->unread_count = record->unread_count;
- s->deleted_count = record->deleted_count;
- s->junk_count = record->junk_count;
- s->visible_count = record->visible_count;
- s->junk_not_deleted_count = record->jnd_count;
-
- return 0;
-}
-
static gint
summary_header_load(CamelFolderSummary *s, FILE *in)
{
return 0;
}
-static CamelFIRecord *
-summary_header_to_db (CamelFolderSummary *s, CamelException *ex)
-{
- CamelFIRecord * record = g_new0 (CamelFIRecord, 1);
- CamelDB *db;
- gchar *table_name;
-
- /* Though we are going to read, we do this during write, so lets use it that way */
- db = s->folder->parent_store->cdb_w;
- table_name = s->folder->full_name;
-
- io(printf("Savining header to db\n"));
-
- record->folder_name = table_name;
-
- /* we always write out the current version */
- record->version = CAMEL_FOLDER_SUMMARY_VERSION;
- record->flags = s->flags;
- record->nextuid = s->nextuid;
- record->time = s->time;
-
- /* FIXME: Ever heard of Constructors and initializing ? */
- if (camel_db_count_total_message_info (db, table_name, &(record->saved_count), NULL))
- record->saved_count = 0;
- if (camel_db_count_junk_message_info (db, table_name, &(record->junk_count), NULL))
- record->junk_count = 0;
- if (camel_db_count_deleted_message_info (db, table_name, &(record->deleted_count), NULL))
- record->deleted_count = 0;
- if (camel_db_count_unread_message_info (db, table_name, &(record->unread_count), NULL))
- record->unread_count = 0;
- if (camel_db_count_visible_message_info (db, table_name, &(record->visible_count), NULL))
- record->visible_count = 0;
- if (camel_db_count_junk_not_deleted_message_info (db, table_name, &(record->jnd_count), NULL))
- record->jnd_count = 0;
-
- s->unread_count = record->unread_count;
- s->deleted_count = record->deleted_count;
- s->junk_count = record->junk_count;
- s->visible_count = record->visible_count;
- s->junk_not_deleted_count = record->jnd_count;
-
- return record;
-}
-
-static gint
-summary_header_save(CamelFolderSummary *s, FILE *out)
-{
- gint unread = 0, deleted = 0, junk = 0, count, i;
-
- fseek(out, 0, SEEK_SET);
-
- io(printf("Savining header\n"));
-
- /* we always write out the current version */
- camel_file_util_encode_fixed_int32(out, CAMEL_FOLDER_SUMMARY_VERSION);
- camel_file_util_encode_fixed_int32(out, s->flags);
- camel_file_util_encode_fixed_int32(out, s->nextuid);
- camel_file_util_encode_time_t(out, s->time);
-
- count = camel_folder_summary_count(s);
- for (i=0; i<count; i++) {
- CamelMessageInfo *info = camel_folder_summary_index(s, i);
- guint32 flags;
-
- if (info == NULL)
- continue;
-
- flags = camel_message_info_flags(info);
- if ((flags & CAMEL_MESSAGE_SEEN) == 0)
- unread++;
- if ((flags & CAMEL_MESSAGE_DELETED) != 0)
- deleted++;
- if ((flags & CAMEL_MESSAGE_JUNK) != 0)
- junk++;
-
- camel_message_info_free(info);
- }
-
- camel_file_util_encode_fixed_int32(out, count);
- camel_file_util_encode_fixed_int32(out, unread);
- camel_file_util_encode_fixed_int32(out, deleted);
-
- return camel_file_util_encode_fixed_int32(out, junk);
-}
-
#if 0
static gint
summary_meta_header_save(CamelFolderSummary *s, FILE *out_meta)
case CAMEL_MIME_PARSER_STATE_HEADER:
case CAMEL_MIME_PARSER_STATE_MESSAGE:
case CAMEL_MIME_PARSER_STATE_MULTIPART:
- mi = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new_from_header(s, camel_mime_parser_headers_raw(mp));
+ mi = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->message_info_new_from_header (s, camel_mime_parser_headers_raw (mp));
break;
default:
g_error("Invalid parser state");
case CAMEL_MIME_PARSER_STATE_HEADER:
case CAMEL_MIME_PARSER_STATE_MESSAGE:
case CAMEL_MIME_PARSER_STATE_MULTIPART:
- ci = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new_from_header(s, camel_mime_parser_headers_raw(mp));
+ ci = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_new_from_header (s, camel_mime_parser_headers_raw (mp));
if (ci) {
ci->type = camel_mime_parser_content_type(mp);
camel_content_type_ref(ci->type);
GChecksum *checksum;
checksum = g_checksum_new (G_CHECKSUM_MD5);
- g_checksum_update (checksum, (guchar *) scan->id, -1);
- g_checksum_get_digest (checksum, digest, &length);
- g_checksum_free (checksum);
-
- memcpy(mi->references->references[count].id.hash, digest, sizeof(mi->message_id.id.hash));
- count++;
- scan = scan->next;
- }
- mi->references->size = count;
- camel_header_references_list_clear(&refs);
- }
-
- return (CamelMessageInfo *)mi;
-}
-
-static CamelMessageInfo *
-message_info_from_db (CamelFolderSummary *s, CamelMIRecord *record)
-{
- CamelMessageInfoBase *mi;
- gint i;
- gint count;
- gchar *part, *label;
-
- mi = (CamelMessageInfoBase *)camel_message_info_new(s);
-
- io(printf("Loading message info from db\n"));
-
- mi->flags = record->flags;
- mi->size = record->size;
- mi->date_sent = record->dsent;
- mi->date_received = record->dreceived;
-
- mi->uid = (gchar *) camel_pstring_strdup (record->uid);
- mi->subject = (gchar *) camel_pstring_add (record->subject, FALSE);
- mi->from = (gchar *) camel_pstring_add (record->from, FALSE);
- mi->to = (gchar *) camel_pstring_add (record->to, FALSE);
- mi->cc = (gchar *) camel_pstring_add (record->cc, FALSE);
- mi->mlist = (gchar *) camel_pstring_add (record->mlist, FALSE);
-
- /* Evolution itself doesn't yet use this, so we ignore it (saving some memory) */
- mi->bodystructure = NULL;
-
- /* Extract Message id & References */
- mi->content = NULL;
- part = record->part;
- if (part) {
- EXTRACT_FIRST_DIGIT (mi->message_id.id.part.hi)
- EXTRACT_DIGIT (mi->message_id.id.part.lo)
- EXTRACT_DIGIT (count)
-
- if (count > 0) {
- mi->references = g_malloc(sizeof(*mi->references) + ((count-1) * sizeof(mi->references->references[0])));
- mi->references->size = count;
- for (i=0;i<count;i++) {
- EXTRACT_DIGIT (mi->references->references[i].id.part.hi)
- EXTRACT_DIGIT (mi->references->references[i].id.part.lo)
- }
- } else
- mi->references = NULL;
-
- }
-
- /* Extract User flags/labels */
- part = record->labels;
- if (part) {
- label = part;
- for (i=0;part[i];i++) {
-
- if (part[i] == ' ') {
- part[i] = 0;
- if (*label)
- camel_flag_set (&mi->user_flags, label, TRUE);
- label = &(part[i+1]);
- }
- }
- camel_flag_set(&mi->user_flags, label, TRUE);
- }
-
- /* Extract User tags */
- part = record->usertags;
- EXTRACT_FIRST_DIGIT (count)
- for (i=0;i<count;i++) {
- gint len;
- gchar *name, *value;
- EXTRACT_STRING (name)
- EXTRACT_STRING (value)
- camel_tag_set(&mi->user_tags, name, value);
- g_free(name);
- g_free(value);
+ g_checksum_update (checksum, (guchar *) scan->id, -1);
+ g_checksum_get_digest (checksum, digest, &length);
+ g_checksum_free (checksum);
+
+ memcpy(mi->references->references[count].id.hash, digest, sizeof(mi->message_id.id.hash));
+ count++;
+ scan = scan->next;
+ }
+ mi->references->size = count;
+ camel_header_references_list_clear(&refs);
}
- return (CamelMessageInfo *) mi;
+ return (CamelMessageInfo *)mi;
}
static CamelMessageInfo *
return ferror(out);
}
-static CamelMIRecord *
-message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
-{
- CamelMIRecord *record = g_new0(CamelMIRecord, 1);
- CamelMessageInfoBase *mi = (CamelMessageInfoBase *) info;
- GString *tmp;
- CamelFlag *flag;
- CamelTag *tag;
- gint count, i;
-
- /* Assume that we dont have to take care of DB Safeness. It will be done while doing the DB transaction */
- record->uid = (gchar *) camel_pstring_strdup(camel_message_info_uid(mi));
- record->flags = mi->flags;
-
- record->read = ((mi->flags & (CAMEL_MESSAGE_SEEN|CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_JUNK))) ? 1 : 0;
- record->deleted = mi->flags & CAMEL_MESSAGE_DELETED ? 1 : 0;
- record->replied = mi->flags & CAMEL_MESSAGE_ANSWERED ? 1 : 0;
- record->important = mi->flags & CAMEL_MESSAGE_FLAGGED ? 1 : 0;
- record->junk = mi->flags & CAMEL_MESSAGE_JUNK ? 1 : 0;
- record->dirty = mi->flags & CAMEL_MESSAGE_FOLDER_FLAGGED ? 1 : 0;
- record->attachment = mi->flags & CAMEL_MESSAGE_ATTACHMENTS ? 1 : 0;
-
- record->size = mi->size;
- record->dsent = mi->date_sent;
- record->dreceived = mi->date_received;
-
- record->subject = (gchar *) camel_pstring_strdup(camel_message_info_subject (mi));
- record->from = (gchar *) camel_pstring_strdup(camel_message_info_from (mi));
- record->to = (gchar *) camel_pstring_strdup(camel_message_info_to (mi));
- record->cc = (gchar *) camel_pstring_strdup(camel_message_info_cc (mi));
- record->mlist = (gchar *) camel_pstring_strdup(camel_message_info_mlist (mi));
-
- record->followup_flag = (gchar *) camel_pstring_strdup(camel_message_info_user_tag(info, "follow-up"));
- record->followup_completed_on = (gchar *) camel_pstring_strdup(camel_message_info_user_tag(info, "completed-on"));
- record->followup_due_by = (gchar *) camel_pstring_strdup(camel_message_info_user_tag(info, "due-by"));
-
- record->bodystructure = mi->bodystructure ? g_strdup (mi->bodystructure) : NULL;
-
- tmp = g_string_new (NULL);
- if (mi->references) {
- g_string_append_printf (tmp, "%lu %lu %lu", (gulong)mi->message_id.id.part.hi, (gulong)mi->message_id.id.part.lo, (gulong)mi->references->size);
- for (i=0;i<mi->references->size;i++)
- g_string_append_printf (tmp, " %lu %lu", (gulong)mi->references->references[i].id.part.hi, (gulong)mi->references->references[i].id.part.lo);
- } else {
- g_string_append_printf (tmp, "%lu %lu %lu", (gulong)mi->message_id.id.part.hi, (gulong)mi->message_id.id.part.lo, (gulong) 0);
- }
- record->part = tmp->str;
- g_string_free (tmp, FALSE);
-
- tmp = g_string_new (NULL);
- flag = mi->user_flags;
- while (flag) {
- g_string_append_printf (tmp, "%s ", flag->name);
- flag = flag->next;
- }
-
- /* Strip off the last space */
- if (tmp->len)
- tmp->len--;
-
- record->labels = tmp->str;
- g_string_free (tmp, FALSE);
-
- tmp = g_string_new (NULL);
- count = camel_tag_list_size(&mi->user_tags);
- g_string_append_printf (tmp, "%lu", (gulong)count);
- tag = mi->user_tags;
- while (tag) {
- /* FIXME: Should we handle empty tags? Can it be empty? If it potential crasher ahead*/
- g_string_append_printf (tmp, " %lu-%s %lu-%s", (gulong)strlen(tag->name), tag->name, (gulong)strlen(tag->value), tag->value);
- tag = tag->next;
- }
- record->usertags = tmp->str;
- g_string_free (tmp, FALSE);
-
- return record;
-}
-
static gint
message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
{
}
static CamelMessageContentInfo *
-content_info_from_db(CamelFolderSummary *s, CamelMIRecord *record)
-{
- CamelMessageContentInfo *ci;
- gchar *type, *subtype;
- guint32 count, i;
- CamelContentType *ct;
- gchar *part = record->cinfo;
- gint len;
-
- io(printf("Loading content info from db\n"));
-
- if (!part)
- return NULL;
-
- ci = camel_folder_summary_content_info_new(s);
- if (*part == ' ') part++; /* Move off the space in the record*/
-
- EXTRACT_FIRST_STRING (type)
- EXTRACT_STRING (subtype)
- ct = camel_content_type_new(type, subtype);
- g_free(type); /* can this be removed? */
- g_free(subtype);
- EXTRACT_DIGIT (count)
-
- for (i = 0; i < count; i++) {
- gchar *name, *value;
- EXTRACT_STRING (name)
- EXTRACT_STRING (value)
-
- camel_content_type_set_param(ct, name, value);
- /* TODO: do this so we dont have to double alloc/free */
- g_free(name);
- g_free(value);
- }
- ci->type = ct;
-
- /* FIXME[disk-summary] move all these to camel pstring */
- EXTRACT_STRING (ci->id);
- EXTRACT_STRING (ci->description)
- EXTRACT_STRING (ci->encoding)
- EXTRACT_DIGIT (ci->size)
-
- record->cinfo = part; /* Keep moving the cursor in the record */
-
- ci->childs = NULL;
-
- return ci;
-}
-
-static CamelMessageContentInfo *
content_info_load(CamelFolderSummary *s, FILE *in)
{
CamelMessageContentInfo *ci;
}
static gint
-content_info_to_db(CamelFolderSummary *s, CamelMessageContentInfo *ci, CamelMIRecord *record)
-{
- CamelContentType *ct;
- struct _camel_header_param *hp;
- GString *str = g_string_new (NULL);
- gchar *oldr;
-
- io(printf("Saving content info to db\n"));
-
- ct = ci->type;
- if (ct) {
- if (ct->type)
- g_string_append_printf (str, " %d-%s", (gint) strlen (ct->type), ct->type);
- else
- g_string_append_printf (str, " 0-");
- if (ct->subtype)
- g_string_append_printf (str, " %d-%s", (gint) strlen (ct->subtype), ct->subtype);
- else
- g_string_append_printf (str, " 0-");
- g_string_append_printf (str, " %d", my_list_size((struct _node **)&ct->params));
- hp = ct->params;
- while (hp) {
- if (hp->name)
- g_string_append_printf (str, " %d-%s", (gint)strlen(hp->name), hp->name);
- else
- g_string_append_printf (str, " 0-");
- if (hp->value)
- g_string_append_printf (str, " %d-%s", (gint)strlen (hp->value), hp->value);
- else
- g_string_append_printf (str, " 0-");
- hp = hp->next;
- }
- } else {
- g_string_append_printf (str, " %d-", 0);
- g_string_append_printf (str, " %d-", 0);
- g_string_append_printf (str, " %d", 0);
- }
-
- if (ci->id)
- g_string_append_printf (str, " %d-%s", (gint)strlen (ci->id), ci->id);
- else
- g_string_append_printf (str, " 0-");
- if (ci->description)
- g_string_append_printf (str, " %d-%s", (gint)strlen (ci->description), ci->description);
- else
- g_string_append_printf (str, " 0-");
- if (ci->encoding)
- g_string_append_printf (str, " %d-%s", (gint)strlen (ci->encoding), ci->encoding);
- else
- g_string_append_printf (str, " 0-");
- g_string_append_printf (str, " %u", ci->size);
-
- if (record->cinfo) {
- oldr = record->cinfo;
- record->cinfo = g_strconcat(oldr, str->str, NULL);
- g_free (oldr); g_string_free (str, TRUE);
- } else {
- record->cinfo = str->str;
- g_string_free (str, FALSE);
- }
-
- return 0;
-}
-
-static gint
content_info_save(CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *ci)
{
CamelContentType *ct;
state = camel_mime_parser_step(mp, &buffer, &len);
if (s->build_content)
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new_from_parser(s, mp);
+ info = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_new_from_parser (s, mp);
switch (state) {
case CAMEL_MIME_PARSER_STATE_HEADER:
if (p->filter_64 == NULL)
p->filter_64 = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_BASE64_DEC);
else
- camel_mime_filter_reset((CamelMimeFilter *)p->filter_64);
- enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_64);
+ camel_mime_filter_reset(p->filter_64);
+ enc_id = camel_mime_parser_filter_add(mp, p->filter_64);
} else if (!g_ascii_strcasecmp(encoding, "quoted-printable")) {
d(printf(" decoding quoted-printable\n"));
if (p->filter_qp == NULL)
p->filter_qp = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_QP_DEC);
else
- camel_mime_filter_reset((CamelMimeFilter *)p->filter_qp);
- enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_qp);
+ camel_mime_filter_reset(p->filter_qp);
+ enc_id = camel_mime_parser_filter_add(mp, p->filter_qp);
} else if (!g_ascii_strcasecmp (encoding, "x-uuencode")) {
d(printf(" decoding x-uuencode\n"));
if (p->filter_uu == NULL)
p->filter_uu = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_UU_DEC);
else
- camel_mime_filter_reset((CamelMimeFilter *)p->filter_uu);
- enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_uu);
+ camel_mime_filter_reset(p->filter_uu);
+ enc_id = camel_mime_parser_filter_add(mp, p->filter_uu);
} else {
d(printf(" ignoring encoding %s\n", encoding));
}
camel_mime_filter_reset((CamelMimeFilter *)mfc);
}
if (mfc) {
- chr_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)mfc);
+ chr_id = camel_mime_parser_filter_add(mp, mfc);
} else {
w(g_warning("Cannot convert '%s' to 'UTF-8', message index may be corrupt", charset));
}
}
/* and this filter actually does the indexing */
- idx_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_index);
+ idx_id = camel_mime_parser_filter_add(mp, p->filter_index);
}
/* and scan/index everything */
while (camel_mime_parser_step(mp, &buffer, &len) != CAMEL_MIME_PARSER_STATE_BODY_END)
const struct _camel_header_raw *header;
if (s->build_content)
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new_from_message(s, object);
+ info = CAMEL_FOLDER_SUMMARY_GET_CLASS (s)->content_info_new_from_message (s, object);
containee = camel_medium_get_content (CAMEL_MEDIUM(object));
}
idx_id = camel_stream_filter_add (
CAMEL_STREAM_FILTER (p->filter_stream),
- (CamelMimeFilter *)p->filter_index);
+ p->filter_index);
camel_data_wrapper_decode_to_stream(containee, p->filter_stream);
camel_stream_flush(p->filter_stream);
if (mi->refcount >= 1)
mi->refcount--;
if (mi->refcount > 0) {
- camel_folder_summary_unlock (mi->summary, CFS_REF_LOCK);
- return;
- }
-
- camel_folder_summary_unlock (mi->summary, CFS_REF_LOCK);
-
- /* FIXME: this is kinda busted, should really be handled by message info free */
- if (mi->summary->build_content
- && ((CamelMessageInfoBase *)mi)->content) {
- camel_folder_summary_content_info_free(mi->summary, ((CamelMessageInfoBase *)mi)->content);
- }
-
- ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(mi->summary)))->message_info_free(mi->summary, mi);
- } else {
- GLOBAL_INFO_LOCK(info);
- mi->refcount--;
- if (mi->refcount > 0) {
- GLOBAL_INFO_UNLOCK(info);
- return;
- }
- GLOBAL_INFO_UNLOCK(info);
-
- message_info_free(NULL, mi);
- }
-}
-
-static CamelMessageInfo *
-message_info_clone(CamelFolderSummary *s, const CamelMessageInfo *mi)
-{
- CamelMessageInfoBase *to, *from = (CamelMessageInfoBase *)mi;
- CamelFlag *flag;
- CamelTag *tag;
-
- to = (CamelMessageInfoBase *)camel_message_info_new(s);
-
- to->flags = from->flags;
- to->size = from->size;
- to->date_sent = from->date_sent;
- to->date_received = from->date_received;
- to->refcount = 1;
-
- /* NB: We don't clone the uid */
-
- to->subject = camel_pstring_strdup(from->subject);
- to->from = camel_pstring_strdup(from->from);
- to->to = camel_pstring_strdup(from->to);
- to->cc = camel_pstring_strdup(from->cc);
- to->mlist = camel_pstring_strdup(from->mlist);
- memcpy(&to->message_id, &from->message_id, sizeof(to->message_id));
- to->preview = g_strdup (from->preview);
- if (from->references) {
- gint len = sizeof(*from->references) + ((from->references->size-1) * sizeof(from->references->references[0]));
+ camel_folder_summary_unlock (mi->summary, CFS_REF_LOCK);
+ return;
+ }
- to->references = g_malloc(len);
- memcpy(to->references, from->references, len);
- }
+ camel_folder_summary_unlock (mi->summary, CFS_REF_LOCK);
- flag = from->user_flags;
- while (flag) {
- camel_flag_set(&to->user_flags, flag->name, TRUE);
- flag = flag->next;
- }
+ /* FIXME: this is kinda busted, should really be handled by message info free */
+ if (mi->summary->build_content
+ && ((CamelMessageInfoBase *)mi)->content) {
+ camel_folder_summary_content_info_free(mi->summary, ((CamelMessageInfoBase *)mi)->content);
+ }
- tag = from->user_tags;
- while (tag) {
- camel_tag_set(&to->user_tags, tag->name, tag->value);
- tag = tag->next;
- }
+ CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->message_info_free (mi->summary, mi);
+ } else {
+ GLOBAL_INFO_LOCK(info);
+ mi->refcount--;
+ if (mi->refcount > 0) {
+ GLOBAL_INFO_UNLOCK(info);
+ return;
+ }
+ GLOBAL_INFO_UNLOCK(info);
- if (from->content) {
- /* FIXME: copy content-infos */
+ message_info_free(NULL, mi);
}
-
- return (CamelMessageInfo *)to;
}
/**
const CamelMessageInfo *mi = o;
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->message_info_clone(mi->summary, mi);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->message_info_clone (mi->summary, mi);
else
return message_info_clone(NULL, mi);
}
-static gconstpointer
-info_ptr(const CamelMessageInfo *mi, gint id)
-{
- switch (id) {
- case CAMEL_MESSAGE_INFO_SUBJECT:
- return ((const CamelMessageInfoBase *)mi)->subject;
- case CAMEL_MESSAGE_INFO_FROM:
- return ((const CamelMessageInfoBase *)mi)->from;
- case CAMEL_MESSAGE_INFO_TO:
- return ((const CamelMessageInfoBase *)mi)->to;
- case CAMEL_MESSAGE_INFO_CC:
- return ((const CamelMessageInfoBase *)mi)->cc;
- case CAMEL_MESSAGE_INFO_MLIST:
- return ((const CamelMessageInfoBase *)mi)->mlist;
- case CAMEL_MESSAGE_INFO_MESSAGE_ID:
- return &((const CamelMessageInfoBase *)mi)->message_id;
- case CAMEL_MESSAGE_INFO_REFERENCES:
- return ((const CamelMessageInfoBase *)mi)->references;
- case CAMEL_MESSAGE_INFO_USER_FLAGS:
- return ((const CamelMessageInfoBase *)mi)->user_flags;
- case CAMEL_MESSAGE_INFO_USER_TAGS:
- return ((const CamelMessageInfoBase *)mi)->user_tags;
- case CAMEL_MESSAGE_INFO_HEADERS:
- return ((const CamelMessageInfoBase *)mi)->headers;
- case CAMEL_MESSAGE_INFO_CONTENT:
- return ((const CamelMessageInfoBase *)mi)->content;
- case CAMEL_MESSAGE_INFO_PREVIEW:
- return ((const CamelMessageInfoBase *)mi)->preview;
-
- default:
- abort();
- }
-}
-
-static guint32
-info_uint32(const CamelMessageInfo *mi, gint id)
-{
- switch (id) {
- case CAMEL_MESSAGE_INFO_FLAGS:
- return ((const CamelMessageInfoBase *)mi)->flags;
- case CAMEL_MESSAGE_INFO_SIZE:
- return ((const CamelMessageInfoBase *)mi)->size;
- default:
- abort();
- }
-}
-
-static time_t
-info_time(const CamelMessageInfo *mi, gint id)
-{
- switch (id) {
- case CAMEL_MESSAGE_INFO_DATE_SENT:
- return ((const CamelMessageInfoBase *)mi)->date_sent;
- case CAMEL_MESSAGE_INFO_DATE_RECEIVED:
- return ((const CamelMessageInfoBase *)mi)->date_received;
- default:
- abort();
- }
-}
-
-static gboolean
-info_user_flag(const CamelMessageInfo *mi, const gchar *id)
-{
- return camel_flag_get(&((CamelMessageInfoBase *)mi)->user_flags, id);
-}
-
-static const gchar *
-info_user_tag(const CamelMessageInfo *mi, const gchar *id)
-{
- return camel_tag_get(&((CamelMessageInfoBase *)mi)->user_tags, id);
-}
-
/**
* camel_message_info_ptr:
* @mi: a #CamelMessageInfo
camel_message_info_ptr(const CamelMessageInfo *mi, gint id)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_ptr(mi, id);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_ptr (mi, id);
else
return info_ptr(mi, id);
}
camel_message_info_uint32(const CamelMessageInfo *mi, gint id)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_uint32(mi, id);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_uint32 (mi, id);
else
return info_uint32(mi, id);
}
camel_message_info_time(const CamelMessageInfo *mi, gint id)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_time(mi, id);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_time (mi, id);
else
return info_time(mi, id);
}
camel_message_info_user_flag(const CamelMessageInfo *mi, const gchar *id)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_user_flag(mi, id);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_user_flag (mi, id);
else
return info_user_flag(mi, id);
}
camel_message_info_user_tag(const CamelMessageInfo *mi, const gchar *id)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_user_tag(mi, id);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_user_tag (mi, id);
else
return info_user_tag(mi, id);
}
-static gboolean
-info_set_flags(CamelMessageInfo *info, guint32 flags, guint32 set)
-{
- guint32 old;
- CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
- gint read=0, deleted=0, junk=0;
- /* TODO: locking? */
-
- if (flags & CAMEL_MESSAGE_SEEN && ((set & CAMEL_MESSAGE_SEEN) != (mi->flags & CAMEL_MESSAGE_SEEN)))
- { read = set & CAMEL_MESSAGE_SEEN ? 1 : -1; d(printf("Setting read as %d\n", set & CAMEL_MESSAGE_SEEN ? 1 : 0));}
-
- if (flags & CAMEL_MESSAGE_DELETED && ((set & CAMEL_MESSAGE_DELETED) != (mi->flags & CAMEL_MESSAGE_DELETED)))
- { deleted = set & CAMEL_MESSAGE_DELETED ? 1 : -1; d(printf("Setting deleted as %d\n", set & CAMEL_MESSAGE_DELETED ? 1 : 0));}
-
- if (flags & CAMEL_MESSAGE_JUNK && ((set & CAMEL_MESSAGE_JUNK) != (mi->flags & CAMEL_MESSAGE_JUNK)))
- { junk = set & CAMEL_MESSAGE_JUNK ? 1 : -1; d(printf("Setting junk as %d\n", set & CAMEL_MESSAGE_JUNK ? 1 : 0));}
-
- old = mi->flags;
- mi->flags = (old & ~flags) | (set & flags);
- if (old != mi->flags) {
- mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
- mi->dirty = TRUE;
- if (mi->summary)
- camel_folder_summary_touch(mi->summary);
- }
-
- if (((old & ~CAMEL_MESSAGE_SYSTEM_MASK) == (mi->flags & ~CAMEL_MESSAGE_SYSTEM_MASK)) && !((set & CAMEL_MESSAGE_JUNK_LEARN) && !(set & CAMEL_MESSAGE_JUNK)))
- return FALSE;
-
- if (mi->summary) {
- if (read && junk == 0 && !(mi->flags & CAMEL_MESSAGE_JUNK))
- mi->summary->unread_count -= read;
- else if (junk > 0)
- mi->summary->unread_count -= (old & CAMEL_MESSAGE_SEEN) ? 0 : 1;
- else if (junk < 0)
- mi->summary->unread_count -= (old & CAMEL_MESSAGE_SEEN) ? 0 : -1;
-
- if (deleted)
- mi->summary->deleted_count += deleted;
- if (junk)
- mi->summary->junk_count += junk;
- if (junk && !deleted)
- mi->summary->junk_not_deleted_count += junk;
- else if ((mi->flags & CAMEL_MESSAGE_JUNK) && deleted)
- mi->summary->junk_not_deleted_count -= deleted;
-
- if (((junk && !(mi->flags & CAMEL_MESSAGE_DELETED)))|| (deleted && !(mi->flags & CAMEL_MESSAGE_JUNK)) )
- mi->summary->visible_count -= junk ? junk : deleted;
- }
- if (mi->uid)
- g_hash_table_replace (CAMEL_FOLDER_SUMMARY_GET_PRIVATE(mi->summary)->flag_cache, (gchar *)mi->uid, GUINT_TO_POINTER(mi->flags));
- if (mi->summary && mi->summary->folder && mi->uid) {
- CamelFolderChangeInfo *changes = camel_folder_change_info_new();
-
- camel_folder_change_info_change_uid(changes, camel_message_info_uid(info));
- camel_object_trigger_event(mi->summary->folder, "folder_changed", changes);
- camel_folder_change_info_free(changes);
- }
-
- d(printf("%d %d %d %d %d\n", mi->summary->unread_count, mi->summary->deleted_count, mi->summary->junk_count, mi->summary->junk_not_deleted_count, mi->summary->visible_count));
- return TRUE;
-}
-
/**
* camel_folder_summary_update_flag_cache:
*
camel_message_info_set_flags(CamelMessageInfo *mi, guint32 flags, guint32 set)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_set_flags(mi, flags, set);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_set_flags (mi, flags, set);
else
return info_set_flags(mi, flags, set);
}
-static gboolean
-info_set_user_flag(CamelMessageInfo *info, const gchar *name, gboolean value)
-{
- CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
- gint res;
-
- res = camel_flag_set(&mi->user_flags, name, value);
-
- /* TODO: check this item is still in the summary first */
- if (mi->summary && res && mi->summary->folder && mi->uid) {
- CamelFolderChangeInfo *changes = camel_folder_change_info_new();
-
- mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
- mi->dirty = TRUE;
- camel_folder_summary_touch(mi->summary);
- camel_folder_change_info_change_uid(changes, camel_message_info_uid(info));
- camel_object_trigger_event(mi->summary->folder, "folder_changed", changes);
- camel_folder_change_info_free(changes);
- }
-
- return res;
-}
-
/**
* camel_message_info_set_user_flag:
* @mi: a #CamelMessageInfo
camel_message_info_set_user_flag(CamelMessageInfo *mi, const gchar *id, gboolean state)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_set_user_flag(mi, id, state);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_set_user_flag (mi, id, state);
else
return info_set_user_flag(mi, id, state);
}
-static gboolean
-info_set_user_tag(CamelMessageInfo *info, const gchar *name, const gchar *value)
-{
- CamelMessageInfoBase *mi = (CamelMessageInfoBase *)info;
- gint res;
-
- res = camel_tag_set(&mi->user_tags, name, value);
-
- if (mi->summary && res && mi->summary->folder && mi->uid) {
- CamelFolderChangeInfo *changes = camel_folder_change_info_new();
-
- mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
- mi->dirty = TRUE;
- camel_folder_summary_touch(mi->summary);
- camel_folder_change_info_change_uid(changes, camel_message_info_uid(info));
- camel_object_trigger_event(mi->summary->folder, "folder_changed", changes);
- camel_folder_change_info_free(changes);
- }
-
- return res;
-}
-
/**
* camel_message_info_set_user_tag:
* @mi: a #CamelMessageInfo
camel_message_info_set_user_tag(CamelMessageInfo *mi, const gchar *id, const gchar *val)
{
if (mi->summary)
- return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_set_user_tag(mi, id, val);
+ return CAMEL_FOLDER_SUMMARY_GET_CLASS (mi->summary)->info_set_user_tag (mi, id, val);
else
return info_set_user_tag(mi, id, val);
}
camel_content_info_dump(((CamelMessageInfoBase *) mi)->content, 0);
}
-static void
-camel_folder_summary_class_init (CamelFolderSummaryClass *class)
-{
- camel_folder_summary_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- class->message_info_size = sizeof (CamelMessageInfoBase);
- class->content_info_size = sizeof (CamelMessageContentInfo);
-
- class->summary_header_load = summary_header_load;
- class->summary_header_save = summary_header_save;
-
- class->summary_header_from_db = summary_header_from_db;
- class->summary_header_to_db = summary_header_to_db;
- class->message_info_from_db = message_info_from_db;
- class->message_info_to_db = message_info_to_db;
- class->content_info_from_db = content_info_from_db;
- class->content_info_to_db = content_info_to_db;
-
- class->message_info_new_from_header = message_info_new_from_header;
- class->message_info_new_from_parser = message_info_new_from_parser;
- class->message_info_new_from_message = message_info_new_from_message;
- class->message_info_load = message_info_load;
- class->message_info_save = message_info_save;
- class->meta_message_info_save = meta_message_info_save;
- class->message_info_free = message_info_free;
- class->message_info_clone = message_info_clone;
- class->message_info_from_uid = message_info_from_uid;
-
- class->content_info_new_from_header = content_info_new_from_header;
- class->content_info_new_from_parser = content_info_new_from_parser;
- class->content_info_new_from_message = content_info_new_from_message;
- class->content_info_load = content_info_load;
- class->content_info_save = content_info_save;
- class->content_info_free = content_info_free;
-
- class->next_uid_string = next_uid_string;
-
- class->info_ptr = info_ptr;
- class->info_uint32 = info_uint32;
- class->info_time = info_time;
- class->info_user_flag = info_user_flag;
- class->info_user_tag = info_user_tag;
-
-#if 0
- class->info_set_string = info_set_string;
- class->info_set_uint32 = info_set_uint32;
- class->info_set_time = info_set_time;
- class->info_set_ptr = info_set_ptr;
-#endif
- class->info_set_user_flag = info_set_user_flag;
- class->info_set_user_tag = info_set_user_tag;
-
- class->info_set_flags = info_set_flags;
-
-}
/**
* camel_folder_summary_set_need_preview:
*
* Locks #summary's #lock. Unlock it with camel_folder_summary_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_folder_summary_lock (CamelFolderSummary *summary, CamelFolderSummaryLock lock)
+camel_folder_summary_lock (CamelFolderSummary *summary,
+ CamelFolderSummaryLock lock)
{
- g_return_if_fail (summary != NULL);
g_return_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary));
- g_return_if_fail (summary->priv != NULL);
switch (lock) {
- case CFS_SUMMARY_LOCK:
- g_mutex_lock (summary->priv->summary_lock);
- break;
- case CFS_IO_LOCK:
- g_mutex_lock (summary->priv->io_lock);
- break;
- case CFS_FILTER_LOCK:
- g_mutex_lock (summary->priv->filter_lock);
- break;
- case CFS_ALLOC_LOCK:
- g_mutex_lock (summary->priv->alloc_lock);
- break;
- case CFS_REF_LOCK:
- g_mutex_lock (summary->priv->ref_lock);
- break;
- default:
- g_return_if_reached ();
+ case CFS_SUMMARY_LOCK:
+ g_mutex_lock (summary->priv->summary_lock);
+ break;
+ case CFS_IO_LOCK:
+ g_mutex_lock (summary->priv->io_lock);
+ break;
+ case CFS_FILTER_LOCK:
+ g_mutex_lock (summary->priv->filter_lock);
+ break;
+ case CFS_ALLOC_LOCK:
+ g_mutex_lock (summary->priv->alloc_lock);
+ break;
+ case CFS_REF_LOCK:
+ g_mutex_lock (summary->priv->ref_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #summary's #lock, previously locked with camel_folder_summary_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_folder_summary_unlock (CamelFolderSummary *summary, CamelFolderSummaryLock lock)
+camel_folder_summary_unlock (CamelFolderSummary *summary,
+ CamelFolderSummaryLock lock)
{
- g_return_if_fail (summary != NULL);
g_return_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary));
- g_return_if_fail (summary->priv != NULL);
switch (lock) {
- case CFS_SUMMARY_LOCK:
- g_mutex_unlock (summary->priv->summary_lock);
- break;
- case CFS_IO_LOCK:
- g_mutex_unlock (summary->priv->io_lock);
- break;
- case CFS_FILTER_LOCK:
- g_mutex_unlock (summary->priv->filter_lock);
- break;
- case CFS_ALLOC_LOCK:
- g_mutex_unlock (summary->priv->alloc_lock);
- break;
- case CFS_REF_LOCK:
- g_mutex_unlock (summary->priv->ref_lock);
- break;
- default:
- g_return_if_reached ();
+ case CFS_SUMMARY_LOCK:
+ g_mutex_unlock (summary->priv->summary_lock);
+ break;
+ case CFS_IO_LOCK:
+ g_mutex_unlock (summary->priv->io_lock);
+ break;
+ case CFS_FILTER_LOCK:
+ g_mutex_unlock (summary->priv->filter_lock);
+ break;
+ case CFS_ALLOC_LOCK:
+ g_mutex_unlock (summary->priv->alloc_lock);
+ break;
+ case CFS_REF_LOCK:
+ g_mutex_unlock (summary->priv->ref_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-mime-parser.h>
#include <camel/camel-index.h>
-#define CAMEL_FOLDER_SUMMARY_TYPE camel_folder_summary_get_type ()
-#define CAMEL_FOLDER_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_folder_summary_get_type (), CamelFolderSummary)
-#define CAMEL_FOLDER_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_folder_summary_get_type (), CamelFolderSummaryClass)
-#define CAMEL_IS_FOLDER_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_folder_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_FOLDER_SUMMARY \
+ (camel_folder_summary_get_type ())
+#define CAMEL_FOLDER_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_FOLDER_SUMMARY, CamelFolderSummary))
+#define CAMEL_FOLDER_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_FOLDER_SUMMARY, CamelFolderSummaryClass))
+#define CAMEL_IS_FOLDER_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_FOLDER_SUMMARY))
+#define CAMEL_IS_FOLDER_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_FOLDER_SUMMARY))
#define CAMEL_FOLDER_SUMMARY_GET_CLASS(obj) \
- ((CamelFolderSummaryClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_FOLDER_SUMMARY, CamelFolderSummaryClass))
G_BEGIN_DECLS
gchar *path; /* Path to meta-summary-file */
};
-CamelType camel_folder_summary_get_type (void);
+GType camel_folder_summary_get_type (void);
CamelFolderSummary *camel_folder_summary_new (struct _CamelFolder *folder);
/* Deprecated */
thread->subject = thread_subject;
thread->tree = NULL;
thread->node_chunks = e_memchunk_new(32, sizeof(CamelFolderThreadNode));
- thread->folder = camel_object_ref (folder);
+ thread->folder = g_object_ref (folder);
fsummary = camel_folder_summary_array (folder->summary);
thread->summary = summary = g_ptr_array_new();
for (i=0;i<thread->summary->len;i++)
camel_folder_free_message_info(thread->folder, thread->summary->pdata[i]);
g_ptr_array_free(thread->summary, TRUE);
- camel_object_unref (thread->folder);
+ g_object_unref (thread->folder);
}
e_memchunk_destroy(thread->node_chunks);
g_free(thread);
#include "camel-vtrash-folder.h"
#include "camel-string-utils.h"
+#define CAMEL_FOLDER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_FOLDER, CamelFolderPrivate))
+
#define d(x)
#define w(x)
gboolean skip_folder_lock;
};
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_ABSTRACT_TYPE (CamelFolder, camel_folder, CAMEL_TYPE_OBJECT)
/* Forward Declarations */
static gboolean folder_changed (CamelObject *object, gpointer event_data);
camel_message_info_set_flags (info, CAMEL_MESSAGE_DELETED, 0);
camel_folder_append_message (dest, msg, info, transferred_uid, ex);
- camel_object_unref (msg);
+ g_object_unref (msg);
if (delete_original && !camel_exception_is_set (ex))
camel_folder_set_message_flags (source, uid, CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_SEEN, ~0);
}
static void
-folder_finalize (CamelObject *object)
+folder_dispose (GObject *object)
{
- CamelFolder *camel_folder = CAMEL_FOLDER (object);
- struct _CamelFolderPrivate *p = camel_folder->priv;
+ CamelFolder *folder;
- g_free (camel_folder->name);
- g_free (camel_folder->full_name);
- g_free (camel_folder->description);
+ folder = CAMEL_FOLDER (object);
- if (camel_folder->parent_store)
- camel_object_unref (camel_folder->parent_store);
+ if (folder->parent_store != NULL) {
+ g_object_unref (folder->parent_store);
+ folder->parent_store = NULL;
+ }
- if (camel_folder->summary) {
- camel_folder->summary->folder = NULL;
- camel_object_unref (camel_folder->summary);
+ if (folder->summary) {
+ folder->summary->folder = NULL;
+ g_object_unref (folder->summary);
+ folder->summary = NULL;
}
- camel_folder_change_info_free (p->changed_frozen);
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (camel_folder_parent_class)->dispose (object);
+}
+
+static void
+folder_finalize (GObject *object)
+{
+ CamelFolder *folder;
+ CamelFolderPrivate *priv;
- g_static_rec_mutex_free (&p->lock);
- g_static_mutex_free (&p->change_lock);
+ folder = CAMEL_FOLDER (object);
+ priv = CAMEL_FOLDER_GET_PRIVATE (object);
- g_free (p);
+ g_free (folder->name);
+ g_free (folder->full_name);
+ g_free (folder->description);
+
+ camel_folder_change_info_free (priv->changed_frozen);
+
+ g_static_rec_mutex_free (&priv->lock);
+ g_static_mutex_free (&priv->change_lock);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_folder_parent_class)->finalize (object);
}
static gint
arg->tag = (tag & CAMEL_ARG_TYPE) | CAMEL_ARG_IGNORE;
}
- return parent_class->getv (object, ex, args);
+ return CAMEL_OBJECT_CLASS (camel_folder_parent_class)->getv (object, ex, args);
}
static void
g_slist_free (val);
break;
default:
- parent_class->free (object, tag, val);
+ CAMEL_OBJECT_CLASS (camel_folder_parent_class)->free (object, tag, val);
}
}
static void
camel_folder_class_init (CamelFolderClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
+ g_type_class_add_private (class, sizeof (CamelFolderPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = folder_dispose;
+ object_class->finalize = folder_finalize;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = folder_getv;
static void
camel_folder_init (CamelFolder *folder)
{
- folder->priv = g_malloc0 (sizeof (*folder->priv));
+ folder->priv = CAMEL_FOLDER_GET_PRIVATE (folder);
+
folder->priv->frozen = 0;
folder->priv->changed_frozen = camel_folder_change_info_new ();
g_static_mutex_init (&folder->priv->change_lock);
}
-CamelType
-camel_folder_get_type (void)
-{
- static CamelType camel_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_folder_type == CAMEL_INVALID_TYPE) {
- camel_folder_type = camel_type_register (CAMEL_TYPE_OBJECT, "CamelFolder",
- sizeof (CamelFolder),
- sizeof (CamelFolderClass),
- (CamelObjectClassInitFunc) camel_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_folder_init,
- (CamelObjectFinalizeFunc) folder_finalize );
- }
-
- return camel_folder_type;
-}
-
/**
* camel_folder_set_lock_async:
* @folder: a #CamelFolder
folder->parent_store = parent_store;
if (parent_store)
- camel_object_ref (parent_store);
+ g_object_ref (parent_store);
folder->name = g_strdup (name);
folder->full_name = g_strdup (full_name);
g_return_val_if_fail (class->refresh_info != NULL, FALSE);
camel_folder_lock (folder, CF_REC_LOCK);
+
success = class->refresh_info (folder, ex);
+
camel_folder_unlock (folder, CF_REC_LOCK);
return success;
g_return_val_if_fail (class->append_message != NULL, FALSE);
camel_folder_lock (folder, CF_REC_LOCK);
+
success = class->append_message (
folder, message, info, appended_uid, ex);
+
camel_folder_unlock (folder, CF_REC_LOCK);
return success;
message = class->get_message (folder, uid, ex);
if (message != NULL) {
- camel_object_unref (message);
+ g_object_unref (message);
success = TRUE;
}
}
if (msg) {
camel_junk_plugin_report_junk (csp, msg);
- camel_object_unref (msg);
+ g_object_unref (msg);
}
}
camel_operation_end (NULL);
if (msg) {
camel_junk_plugin_report_notjunk (csp, msg);
- camel_object_unref (msg);
+ g_object_unref (msg);
}
}
camel_operation_end (NULL);
struct _folder_filter_msg *m = (struct _folder_filter_msg *)msg;
if (m->driver)
- camel_object_unref (m->driver);
+ g_object_unref (m->driver);
if (m->recents)
camel_folder_free_deep (m->folder, m->recents);
if (m->junk)
camel_folder_summary_save_to_db (m->folder->summary, &m->ex);
camel_folder_thaw (m->folder);
- camel_object_unref (m->folder);
+ g_object_unref (m->folder);
}
static CamelSessionThreadOps filter_ops = {
msg->recents = recents;
msg->junk = junk;
msg->notjunk = notjunk;
- msg->folder = camel_object_ref (folder);
+ msg->folder = g_object_ref (folder);
camel_folder_freeze (folder);
/* Copy changes back to changed_frozen list to retain
* them while we are filtering */
*
* Locks #folder's #lock. Unlock it with camel_folder_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_folder_lock (CamelFolder *folder, CamelFolderLock lock)
+camel_folder_lock (CamelFolder *folder,
+ CamelFolderLock lock)
{
- g_return_if_fail (folder != NULL);
g_return_if_fail (CAMEL_IS_FOLDER (folder));
- g_return_if_fail (folder->priv != NULL);
switch (lock) {
- case CF_CHANGE_LOCK:
- g_static_mutex_lock (&folder->priv->change_lock);
- break;
- case CF_REC_LOCK:
- if (folder->priv->skip_folder_lock == FALSE) g_static_rec_mutex_lock (&folder->priv->lock);
- break;
- default:
- g_return_if_reached ();
+ case CF_CHANGE_LOCK:
+ g_static_mutex_lock (&folder->priv->change_lock);
+ break;
+ case CF_REC_LOCK:
+ if (folder->priv->skip_folder_lock == FALSE)
+ g_static_rec_mutex_lock (&folder->priv->lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #folder's #lock, previously locked with camel_folder_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_folder_unlock (CamelFolder *folder, CamelFolderLock lock)
+camel_folder_unlock (CamelFolder *folder,
+ CamelFolderLock lock)
{
- g_return_if_fail (folder != NULL);
g_return_if_fail (CAMEL_IS_FOLDER (folder));
- g_return_if_fail (folder->priv != NULL);
switch (lock) {
- case CF_CHANGE_LOCK:
- g_static_mutex_unlock (&folder->priv->change_lock);
- break;
- case CF_REC_LOCK:
- if (folder->priv->skip_folder_lock == FALSE) g_static_rec_mutex_unlock (&folder->priv->lock);
- break;
- default:
- g_return_if_reached ();
+ case CF_CHANGE_LOCK:
+ g_static_mutex_unlock (&folder->priv->change_lock);
+ break;
+ case CF_REC_LOCK:
+ if (folder->priv->skip_folder_lock == FALSE)
+ g_static_rec_mutex_unlock (&folder->priv->lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-folder-summary.h>
-#define CAMEL_FOLDER_TYPE (camel_folder_get_type ())
-#define CAMEL_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_FOLDER_TYPE, CamelFolder))
-#define CAMEL_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_FOLDER_TYPE, CamelFolderClass))
-#define CAMEL_IS_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_FOLDER \
+ (camel_folder_get_type ())
+#define CAMEL_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_FOLDER, CamelFolder))
+#define CAMEL_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_FOLDER, CamelFolderClass))
+#define CAMEL_IS_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_FOLDER))
+#define CAMEL_IS_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_FOLDER))
#define CAMEL_FOLDER_GET_CLASS(obj) \
- ((CamelFolderClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_FOLDER, CamelFolderClass))
G_BEGIN_DECLS
CAMEL_FOLDER_PROPERTIES = CAMEL_FOLDER_ARG_PROPERTIES | CAMEL_ARG_PTR
};
-typedef enum _CamelFolderLock {
+typedef enum {
CF_CHANGE_LOCK,
CF_REC_LOCK
} CamelFolderLock;
CamelException *ex);
};
-CamelType camel_folder_get_type (void);
+GType camel_folder_get_type (void);
void camel_folder_construct (CamelFolder *folder,
struct _CamelStore *parent_store,
const gchar *full_name,
void camel_folder_change_info_recent_uid
(CamelFolderChangeInfo *info,
const gchar *uid);
-
-void camel_folder_lock (CamelFolder *folder, CamelFolderLock lock);
-void camel_folder_unlock (CamelFolder *folder, CamelFolderLock lock);
+void camel_folder_lock (CamelFolder *folder,
+ CamelFolderLock lock);
+void camel_folder_unlock (CamelFolder *folder,
+ CamelFolderLock lock);
G_END_DECLS
static gint logid;
#endif
-#define CAMEL_CIPHER_CONTEXT_GET_CLASS(obj) \
- ((CamelCipherContextClass *) CAMEL_OBJECT_GET_CLASS (obj))
-
-static CamelCipherContextClass *parent_class = NULL;
+#define CAMEL_GPG_CONTEXT_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_GPG_CONTEXT, CamelGpgContextPrivate))
struct _CamelGpgContextPrivate {
gboolean always_trust;
};
+enum {
+ PROP_0,
+ PROP_ALWAYS_TRUST
+};
+
+G_DEFINE_TYPE (CamelGpgContext, camel_gpg_context, CAMEL_TYPE_CIPHER_CONTEXT)
+
static const gchar *
gpg_hash_to_id (CamelCipherContext *context, CamelCipherHash hash)
{
gpg = g_new (struct _GpgCtx, 1);
gpg->mode = GPG_CTX_MODE_SIGN;
- gpg->session = camel_object_ref (session);
+ gpg->session = g_object_ref (session);
gpg->userid_hint = g_hash_table_new (g_str_hash, g_str_equal);
gpg->complete = FALSE;
gpg->seen_eof1 = TRUE;
fstream = camel_stream_filter_new (stream);
camel_stream_filter_add (
CAMEL_STREAM_FILTER (fstream), filter);
- camel_object_unref (filter);
- camel_object_unref (stream);
+ g_object_unref (filter);
+ g_object_unref (stream);
stream = (CamelStream *) fstream;
}
static void
gpg_ctx_set_istream (struct _GpgCtx *gpg, CamelStream *istream)
{
- camel_object_ref (istream);
+ g_object_ref (istream);
if (gpg->istream)
- camel_object_unref (gpg->istream);
+ g_object_unref (gpg->istream);
gpg->istream = istream;
}
static void
gpg_ctx_set_ostream (struct _GpgCtx *gpg, CamelStream *ostream)
{
- camel_object_ref (ostream);
+ g_object_ref (ostream);
if (gpg->ostream)
- camel_object_unref (gpg->ostream);
+ g_object_unref (gpg->ostream);
gpg->ostream = ostream;
gpg->seen_eof1 = FALSE;
}
return;
if (gpg->session)
- camel_object_unref (gpg->session);
+ g_object_unref (gpg->session);
g_hash_table_foreach (gpg->userid_hint, userid_hint_free, NULL);
g_hash_table_destroy (gpg->userid_hint);
}
if (gpg->istream)
- camel_object_unref (gpg->istream);
+ g_object_unref (gpg->istream);
if (gpg->ostream)
- camel_object_unref (gpg->ostream);
+ g_object_unref (gpg->ostream);
- camel_object_unref (gpg->diagnostics);
+ g_object_unref (gpg->diagnostics);
if (gpg->signers)
g_string_free (gpg->signers, TRUE);
if (strncmp ((const gchar *) status, "[GNUPG:] ", 9) != 0) {
gchar *message;
+
message = g_locale_to_utf8 (
(const gchar *) status, -1, NULL, NULL, NULL);
camel_exception_setv (
printf("Writing gpg signing data to '%s'\n", name);
camel_stream_write_to_stream(istream, out);
camel_stream_reset(istream);
- camel_object_unref (out);
+ g_object_unref (out);
}
g_free(name);
camel_debug_end();
camel_content_type_unref(ct);
camel_medium_set_content ((CamelMedium *)sigpart, dw);
- camel_object_unref (dw);
+ g_object_unref (dw);
camel_mime_part_set_description(sigpart, "This is a digitally signed message part");
mps->signature = sigpart;
mps->contentraw = istream;
camel_stream_reset(istream);
- camel_object_ref (istream);
+ g_object_ref (istream);
camel_medium_set_content ((CamelMedium *)opart, (CamelDataWrapper *)mps);
fail:
- camel_object_unref (ostream);
+ g_object_unref (ostream);
if (gpg)
gpg_ctx_free (gpg);
ret = camel_stream_close (ostream);
}
- camel_object_unref (ostream);
+ g_object_unref (ostream);
if (ret == -1) {
g_unlink (template);
camel_cipher_validity_add_certinfo (validity, CAMEL_CIPHER_VALIDITY_SIGN, name, email);
}
- camel_object_unref (address);
+ g_object_unref (address);
}
static CamelCipherValidity *
ex, CAMEL_EXCEPTION_SYSTEM,
_("Cannot verify message signature: "
"Incorrect message format"));
- camel_object_unref (istream);
+ g_object_unref (istream);
return NULL;
}
} else if (camel_content_type_is(ct, "application", "x-inlinepgp-signed")) {
printf("Writing gpg verify data to '%s'\n", name);
camel_stream_write_to_stream(istream, out);
camel_stream_reset(istream);
- camel_object_unref (out);
+ g_object_unref (out);
}
g_free(name);
if (out) {
printf("Writing gpg verify signature to '%s'\n", name);
camel_data_wrapper_write_to_stream((CamelDataWrapper *)sigpart, out);
- camel_object_unref (out);
+ g_object_unref (out);
}
g_free(name);
}
filter = camel_stream_filter_new (canon_stream);
canon = camel_mime_filter_canon_new (CAMEL_MIME_FILTER_CANON_CRLF | CAMEL_MIME_FILTER_CANON_STRIP);
camel_stream_filter_add (CAMEL_STREAM_FILTER (filter), canon);
- camel_object_unref (canon);
+ g_object_unref (canon);
camel_stream_write_to_stream (istream, filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
camel_stream_reset (istream);
camel_stream_reset (canon_stream);
g_unlink (sigfile);
g_free (sigfile);
}
- camel_object_unref (istream);
- camel_object_unref (canon_stream);
+ g_object_unref (istream);
+ g_object_unref (canon_stream);
return validity;
gpg_ctx_free (gpg);
if (istream)
- camel_object_unref (istream);
+ g_object_unref (istream);
if (sigfile) {
g_unlink (sigfile);
camel_content_type_unref(ct);
camel_medium_set_content ((CamelMedium *)encpart, dw);
- camel_object_unref (dw);
+ g_object_unref (dw);
camel_mime_part_set_description(encpart, _("This is a digitally encrypted message part"));
dw = camel_data_wrapper_new();
camel_data_wrapper_set_mime_type(dw, class->encrypt_protocol);
camel_data_wrapper_construct_from_stream (dw, vstream);
- camel_object_unref (vstream);
+ g_object_unref (vstream);
camel_medium_set_content ((CamelMedium *)verpart, dw);
- camel_object_unref (dw);
+ g_object_unref (dw);
mpe = camel_multipart_encrypted_new();
ct = camel_content_type_new("multipart", "encrypted");
camel_content_type_unref(ct);
camel_multipart_set_boundary((CamelMultipart *)mpe, NULL);
- mpe->decrypted = camel_object_ref (ipart);
+ mpe->decrypted = g_object_ref (ipart);
camel_multipart_add_part((CamelMultipart *)mpe, verpart);
- camel_object_unref (verpart);
+ g_object_unref (verpart);
camel_multipart_add_part((CamelMultipart *)mpe, encpart);
- camel_object_unref (encpart);
+ g_object_unref (encpart);
camel_medium_set_content ((CamelMedium *)opart, (CamelDataWrapper *)mpe);
fail:
gpg_ctx_free(gpg);
fail1:
- camel_object_unref (istream);
- camel_object_unref (ostream);
+ g_object_unref (istream);
+ g_object_unref (ostream);
return res;
}
istream = camel_stream_mem_new();
camel_data_wrapper_decode_to_stream (content, istream);
- camel_stream_reset(istream);
+ camel_stream_reset (istream);
ostream = camel_stream_mem_new();
camel_stream_mem_set_secure((CamelStreamMem *)ostream);
goto fail;
}
- camel_stream_reset(ostream);
+ camel_stream_reset (ostream);
if (camel_content_type_is(ct, "multipart", "encrypted")) {
CamelDataWrapper *dw;
CamelStream *null = camel_stream_null_new ();
rv = camel_data_wrapper_construct_from_stream (dw, ostream);
}
- camel_object_unref (null);
+ g_object_unref (null);
} else {
/* Inline signed - raw data (may not be a mime part) */
CamelDataWrapper *dw;
rv = camel_data_wrapper_construct_from_stream (dw, ostream);
camel_data_wrapper_set_mime_type(dw, "application/octet-stream");
camel_medium_set_content ((CamelMedium *)opart, dw);
- camel_object_unref (dw);
+ g_object_unref (dw);
/* Set mime/type of this new part to application/octet-stream to force type snooping */
camel_mime_part_set_content_type(opart, "application/octet-stream");
}
}
fail:
- camel_object_unref (ostream);
- camel_object_unref (istream);
+ g_object_unref (ostream);
+ g_object_unref (istream);
gpg_ctx_free (gpg);
return valid;
/* ********************************************************************** */
static void
-gpg_context_finalize (CamelObject *object)
+gpg_context_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- g_free (CAMEL_GPG_CONTEXT (object)->priv);
+ switch (property_id) {
+ case PROP_ALWAYS_TRUST:
+ camel_gpg_context_set_always_trust (
+ CAMEL_GPG_CONTEXT (object),
+ g_value_get_boolean (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+gpg_context_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_ALWAYS_TRUST:
+ g_value_set_boolean (
+ value,
+ camel_gpg_context_get_always_trust (
+ CAMEL_GPG_CONTEXT (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
camel_gpg_context_class_init (CamelGpgContextClass *class)
{
+ GObjectClass *object_class;
CamelCipherContextClass *cipher_context_class;
- parent_class = CAMEL_CIPHER_CONTEXT_CLASS (camel_type_get_global_classfuncs (camel_cipher_context_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelGpgContextClass));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = gpg_context_set_property;
+ object_class->get_property = gpg_context_get_property;
cipher_context_class = CAMEL_CIPHER_CONTEXT_CLASS (class);
cipher_context_class->sign_protocol = "application/pgp-signature";
cipher_context_class->decrypt = gpg_decrypt;
cipher_context_class->import_keys = gpg_import_keys;
cipher_context_class->export_keys = gpg_export_keys;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_ALWAYS_TRUST,
+ g_param_spec_boolean (
+ "always-trust",
+ "Always Trust",
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
}
static void
camel_gpg_context_init (CamelGpgContext *context)
{
- context->priv = g_new0 (CamelGpgContextPrivate, 1);
-}
-
-CamelType
-camel_gpg_context_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_cipher_context_get_type (),
- "CamelGpgContext",
- sizeof (CamelGpgContext),
- sizeof (CamelGpgContextClass),
- (CamelObjectClassInitFunc) camel_gpg_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_gpg_context_init,
- (CamelObjectFinalizeFunc) gpg_context_finalize);
- }
-
- return type;
+ context->priv = CAMEL_GPG_CONTEXT_GET_PRIVATE (context);
}
/**
CamelCipherContext *
camel_gpg_context_new (CamelSession *session)
{
- CamelCipherContext *cipher;
- CamelGpgContext *ctx;
-
g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
- ctx = (CamelGpgContext *) camel_object_new (camel_gpg_context_get_type ());
-
- cipher = CAMEL_CIPHER_CONTEXT (ctx);
- camel_cipher_context_construct (CAMEL_CIPHER_CONTEXT (ctx), session);
-
- return cipher;
+ return g_object_new (
+ CAMEL_TYPE_GPG_CONTEXT,
+ "session", session, NULL);
}
gboolean
g_return_if_fail (CAMEL_IS_GPG_CONTEXT (context));
context->priv->always_trust = always_trust;
-}
+ g_object_notify (G_OBJECT (context), "always-trust");
+}
#include <camel/camel-cipher-context.h>
#include <camel/camel-session.h>
-#define CAMEL_GPG_CONTEXT_TYPE (camel_gpg_context_get_type ())
-#define CAMEL_GPG_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_GPG_CONTEXT_TYPE, CamelGpgContext))
-#define CAMEL_GPG_CONTEXT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_GPG_CONTEXT_TYPE, CamelGpgContextClass))
-#define CAMEL_IS_GPG_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_GPG_CONTEXT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_GPG_CONTEXT \
+ (camel_gpg_context_get_type ())
+#define CAMEL_GPG_CONTEXT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GPG_CONTEXT, CamelGpgContext))
+#define CAMEL_GPG_CONTEXT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GPG_CONTEXT, CamelGpgContextClass))
+#define CAMEL_IS_GPG_CONTEXT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GPG_CONTEXT))
+#define CAMEL_IS_GPG_CONTEXT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GPG_CONTEXT))
+#define CAMEL_GPG_CONTEXT_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_GPG_CONTEXT, CamelGpgContextClass))
G_BEGIN_DECLS
CamelCipherContextClass parent_class;
};
-CamelType camel_gpg_context_get_type (void);
+GType camel_gpg_context_get_type (void);
CamelCipherContext *
camel_gpg_context_new (CamelSession *session);
gboolean camel_gpg_context_get_always_trust
/* if defined, must also compile in dump_tag() below somewhere */
#define d(x)
-static CamelObjectClass *camel_html_parser_parent;
-
/* Parser definitions, see below object code for details */
struct _CamelHTMLParserPrivate {
static void tokenize_free(CamelHTMLParserPrivate *p);
static gint tokenize_step(CamelHTMLParserPrivate *p, gchar **datap, gint *lenp);
+G_DEFINE_TYPE (CamelHTMLParser, camel_html_parser, CAMEL_TYPE_OBJECT)
+
/* ********************************************************************** */
static void
-html_parser_finalize (CamelObject *o)
+html_parser_finalize (GObject *object)
{
- CamelHTMLParser *parser = (CamelHTMLParser *)o;
+ CamelHTMLParser *parser = CAMEL_HTML_PARSER (object);
tokenize_free (parser->priv);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_html_parser_parent_class)->finalize (object);
}
static void
-camel_html_parser_class_init (CamelHTMLParserClass *klass)
+camel_html_parser_class_init (CamelHTMLParserClass *class)
{
- camel_html_parser_parent = CAMEL_OBJECT_CLASS (camel_type_get_global_classfuncs (camel_object_get_type ()));
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = html_parser_finalize;
tokenize_setup();
}
parser->priv = tokenize_init();
}
-CamelType
-camel_html_parser_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelHTMLParser",
- sizeof (CamelHTMLParser),
- sizeof (CamelHTMLParserClass),
- (CamelObjectClassInitFunc) camel_html_parser_class_init,
- NULL,
- (CamelObjectInitFunc) camel_html_parser_init,
- (CamelObjectFinalizeFunc) html_parser_finalize);
- }
-
- return type;
-}
-
/**
* camel_html_parser_new:
*
CamelHTMLParser *
camel_html_parser_new (void)
{
- return CAMEL_HTML_PARSER ( camel_object_new (camel_html_parser_get_type ()));
+ return g_object_new (CAMEL_TYPE_HTML_PARSER, NULL);
}
void camel_html_parser_set_data(CamelHTMLParser *hp, const gchar *start, gint len, gint last)
#include <camel/camel-object.h>
-#define CAMEL_HTML_PARSER(obj) CAMEL_CHECK_CAST (obj, camel_html_parser_get_type (), CamelHTMLParser)
-#define CAMEL_HTML_PARSER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_html_parser_get_type (), CamelHTMLParserClass)
-#define CAMEL_IS_HTML_PARSER(obj) CAMEL_CHECK_TYPE (obj, camel_html_parser_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_HTML_PARSER \
+ (camel_html_parser_get_type ())
+#define CAMEL_HTML_PARSER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_HTML_PARSER, CamelHTMLParser))
+#define CAMEL_HTML_PARSER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_HTML_PARSER, CamelHTMLParserClass))
+#define CAMEL_IS_HTML_PARSER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_HTML_PARSER))
+#define CAMEL_IS_HTML_PARSER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_HTML_PARSER))
+#define CAMEL_HTML_PARSER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_HTML_PARSER, CamelHTMLParserClass))
G_BEGIN_DECLS
CamelObjectClass parent_class;
};
-CamelType camel_html_parser_get_type (void);
+GType camel_html_parser_get_type (void);
CamelHTMLParser *camel_html_parser_new (void);
void camel_html_parser_set_data(CamelHTMLParser *hp, const gchar *start, gint len, gint last);
#define d(x)
-static CamelStreamClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelHttpStream, camel_http_stream, CAMEL_TYPE_STREAM)
static CamelStream *
http_connect (CamelHttpStream *http,
ai = camel_getaddrinfo(url->host, serv, &hints, NULL);
if (ai == NULL) {
- camel_object_unref (stream);
+ g_object_unref (stream);
return NULL;
}
if (camel_tcp_stream_connect (tcp_stream, ai) == -1) {
errsave = errno;
- camel_object_unref (stream);
+ g_object_unref (stream);
camel_freeaddrinfo(ai);
errno = errsave;
return NULL;
http_disconnect (CamelHttpStream *http)
{
if (http->raw) {
- camel_object_unref (http->raw);
+ g_object_unref (http->raw);
http->raw = NULL;
}
if (http->read) {
- camel_object_unref (http->read);
+ g_object_unref (http->read);
http->read = NULL;
}
if (http->parser) {
- camel_object_unref (http->parser);
+ g_object_unref (http->parser);
http->parser = NULL;
}
}
gint err;
if (http->parser)
- camel_object_unref (http->parser);
+ g_object_unref (http->parser);
http->parser = camel_mime_parser_new ();
camel_mime_parser_init_with_stream (http->parser, http->read);
err = camel_mime_parser_errno (http->parser);
if (err != 0) {
- camel_object_unref (http->parser);
+ g_object_unref (http->parser);
http->parser = NULL;
goto exception;
}
}
static void
-http_stream_finalize (CamelHttpStream *http)
+http_stream_dispose (GObject *object)
{
- if (http->parser)
- camel_object_unref (http->parser);
+ CamelHttpStream *http = CAMEL_HTTP_STREAM (object);
+
+ if (http->parser != NULL) {
+ g_object_unref (http->parser);
+ http->parser = NULL;
+ }
- if (http->content_type)
+ if (http->content_type != NULL) {
camel_content_type_unref (http->content_type);
+ http->content_type = NULL;
+ }
+
+ if (http->session != NULL) {
+ g_object_unref (http->session);
+ http->session = NULL;
+ }
- if (http->headers)
- camel_header_raw_clear (&http->headers);
+ if (http->raw != NULL) {
+ g_object_unref (http->raw);
+ http->raw = NULL;
+ }
- if (http->session != NULL)
- camel_object_unref (http->session);
+ if (http->read != NULL) {
+ g_object_unref (http->read);
+ http->read = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_http_stream_parent_class)->dispose (object);
+}
+
+static void
+http_stream_finalize (GObject *object)
+{
+ CamelHttpStream *http = CAMEL_HTTP_STREAM (object);
+
+ camel_header_raw_clear (&http->headers);
if (http->url != NULL)
camel_url_free (http->url);
g_free (http->authrealm);
g_free (http->authpass);
- if (http->raw != NULL)
- camel_object_unref (http->raw);
-
- if (http->read != NULL)
- camel_object_unref (http->read);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_http_stream_parent_class)->finalize (object);
}
static gssize
static void
camel_http_stream_class_init (CamelHttpStreamClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = http_stream_dispose;
+ object_class->finalize = http_stream_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = http_stream_read;
static void
camel_http_stream_init (CamelHttpStream *http)
{
- http->parser = NULL;
- http->content_type = NULL;
- http->headers = NULL;
- http->session = NULL;
- http->url = NULL;
- http->proxy = NULL;
- http->authrealm = NULL;
- http->authpass = NULL;
- http->statuscode = 0;
- http->raw = NULL;
-}
-
-CamelType
-camel_http_stream_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_stream_get_type (),
- "CamelHttpStream",
- sizeof (CamelHttpStream),
- sizeof (CamelHttpStreamClass),
- (CamelObjectClassInitFunc) camel_http_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_http_stream_init,
- (CamelObjectFinalizeFunc) http_stream_finalize);
- }
-
- return type;
}
/**
g_return_val_if_fail(CAMEL_IS_SESSION(session), NULL);
g_return_val_if_fail(url != NULL, NULL);
- stream = CAMEL_HTTP_STREAM (camel_object_new (camel_http_stream_get_type ()));
+ stream = g_object_new (CAMEL_TYPE_HTTP_STREAM, NULL);
stream->method = method;
- stream->session = camel_object_ref (session);
+ stream->session = g_object_ref (session);
str = camel_url_to_string (url, 0);
stream->url = camel_url_new (str, NULL);
#include <camel/camel-stream.h>
#include <camel/camel-url.h>
-#define CAMEL_HTTP_STREAM_TYPE (camel_http_stream_get_type ())
-#define CAMEL_HTTP_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_HTTP_STREAM_TYPE, CamelHttpStream))
-#define CAMEL_HTTP_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_HTTP_STREAM_TYPE, CamelHttpStreamClass))
-#define CAMEL_IS_HTTP_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_HTTP_STREAM_TYPE))
+#define CAMEL_TYPE_HTTP_STREAM \
+ (camel_http_stream_get_type ())
+#define CAMEL_HTTP_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_HTTP_STREAM, CamelHttpStream))
+#define CAMEL_HTTP_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_HTTP_STREAM, CamelHttpStreamClass))
+#define CAMEL_IS_HTTP_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_HTTP_STREAM))
+#define CAMEL_IS_HTTP_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_HTTP_STREAM))
+#define CAMEL_HTTP_STREAM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_HTTP_STREAM, CamelHttpStreamClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_http_stream_get_type (void);
+GType camel_http_stream_get_type (void);
CamelStream * camel_http_stream_new (CamelHttpMethod method,
struct _CamelSession *session,
CamelURL *url);
if (idx) {
printf(" Compressing ...\n");
if (camel_index_compress (idx) == -1) {
- camel_object_unref (idx);
+ g_object_unref (idx);
return 1;
}
- camel_object_unref (idx);
+ g_object_unref (idx);
} else {
printf(" Failed: %s\n", g_strerror (errno));
return 1;
if (idx) {
printf(" Dumping ...\n");
camel_text_index_dump((CamelTextIndex *)idx);
- camel_object_unref (idx);
+ g_object_unref (idx);
} else {
printf(" Failed: %s\n", g_strerror (errno));
return 1;
idx = (CamelIndex *)camel_text_index_new(argv[i], O_RDONLY);
if (idx) {
camel_text_index_info((CamelTextIndex *)idx);
- camel_object_unref (idx);
+ g_object_unref (idx);
} else {
printf(" Failed: %s\n", g_strerror (errno));
return 0;
idx = (CamelIndex *)camel_text_index_new(argv[i], O_RDONLY);
if (idx) {
camel_text_index_validate((CamelTextIndex *)idx);
- camel_object_unref (idx);
+ g_object_unref (idx);
} else {
printf(" Failed: %s\n", g_strerror (errno));
return 0;
null = camel_stream_null_new();
filter = camel_stream_filter_new (null);
- camel_object_unref (null);
+ g_object_unref (null);
filter_index = camel_mime_filter_index_new (idx);
camel_stream_filter_add((CamelStreamFilter *)filter, filter_index);
name = g_strdup_printf("%s/%s", path, d->d_name);
stream = camel_stream_fs_new_with_name(name, O_RDONLY, 0);
camel_stream_write_to_stream(stream, filter);
- camel_object_unref (stream);
+ g_object_unref (stream);
g_free(name);
camel_index_write_name(idx, idn);
- camel_object_unref (idn);
+ g_object_unref (idn);
camel_mime_filter_index_set_name (
CAMEL_MIME_FILTER_INDEX (filter_index), NULL);
}
closedir(dir);
camel_index_sync(idx);
- camel_object_unref (idx);
+ g_object_unref (idx);
- camel_object_unref (filter);
- camel_object_unref (filter_index);
+ g_object_unref (filter);
+ g_object_unref (filter_index);
return 0;
}
#define CAMEL_INDEX_VERSION (0x01)
+#define CAMEL_INDEX_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_INDEX, CamelIndexPrivate))
+
struct _CamelIndexPrivate {
gpointer dummy;
};
-#define _PRIVATE(o) (((CamelIndex *)(o))->priv)
-
/* ********************************************************************** */
/* CamelIndex */
/* ********************************************************************** */
-static CamelObjectClass *camel_index_parent;
+G_DEFINE_TYPE (CamelIndex, camel_index, CAMEL_TYPE_OBJECT)
static void
-index_finalize (CamelIndex *index)
+index_finalize (GObject *object)
{
+ CamelIndex *index = CAMEL_INDEX (object);
+
g_free (index->path);
- g_free (index->priv);
-}
-static void
-camel_index_class_init (CamelIndexClass *klass)
-{
- camel_index_parent = CAMEL_OBJECT_CLASS(camel_type_get_global_classfuncs(camel_object_get_type()));
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_index_parent_class)->finalize (object);
}
static void
-camel_index_init (CamelIndex *idx)
+camel_index_class_init (CamelIndexClass *class)
{
- struct _CamelIndexPrivate *p;
+ GObjectClass *object_class;
- p = _PRIVATE(idx) = g_malloc0(sizeof(*p));
+ g_type_class_add_private (class, sizeof (CamelIndexPrivate));
- idx->version = CAMEL_INDEX_VERSION;
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = index_finalize;
}
-CamelType
-camel_index_get_type(void)
+static void
+camel_index_init (CamelIndex *index)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelIndex",
- sizeof (CamelIndex),
- sizeof (CamelIndexClass),
- (CamelObjectClassInitFunc) camel_index_class_init,
- NULL,
- (CamelObjectInitFunc) camel_index_init,
- (CamelObjectFinalizeFunc) index_finalize);
- }
-
- return type;
+ index->priv = CAMEL_INDEX_GET_PRIVATE (index);
+ index->version = CAMEL_INDEX_VERSION;
}
CamelIndex *
-camel_index_new(const gchar *path, gint flags)
+camel_index_new (const gchar *path, gint flags)
{
CamelIndex *idx;
- idx = (CamelIndex *)camel_object_new(camel_index_get_type());
+ idx = g_object_new (CAMEL_TYPE_INDEX, NULL);
camel_index_construct (idx, path, flags);
return idx;
/* CamelIndexName */
/* ********************************************************************** */
-static CamelObjectClass *camel_index_name_parent;
+G_DEFINE_TYPE (CamelIndexName, camel_index_name, CAMEL_TYPE_OBJECT)
static void
-index_name_finalize(CamelIndexName *idn)
+index_name_dispose (GObject *object)
{
- if (idn->index)
- camel_object_unref (idn->index);
-}
+ CamelIndexName *index_name = CAMEL_INDEX_NAME (object);
-static void
-camel_index_name_class_init(CamelIndexNameClass *klass)
-{
- camel_index_name_parent = CAMEL_OBJECT_CLASS(camel_type_get_global_classfuncs(camel_object_get_type()));
+ if (index_name->index != NULL) {
+ g_object_unref (index_name->index);
+ index_name->index = NULL;
+ }
+
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (camel_index_name_parent_class)->dispose (object);
}
static void
-camel_index_name_init(CamelIndexName *idn)
+camel_index_name_class_init (CamelIndexNameClass *class)
{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = index_name_dispose;
}
-CamelType
-camel_index_name_get_type(void)
+static void
+camel_index_name_init (CamelIndexName *index_name)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelIndexName",
- sizeof (CamelIndexName),
- sizeof (CamelIndexNameClass),
- (CamelObjectClassInitFunc) camel_index_name_class_init,
- NULL,
- (CamelObjectInitFunc) camel_index_name_init,
- (CamelObjectFinalizeFunc) index_name_finalize);
- }
-
- return type;
}
CamelIndexName *
{
CamelIndexName *idn;
- idn = (CamelIndexName *)camel_object_new(camel_index_name_get_type());
- idn->index = camel_object_ref (idx);
+ idn = g_object_new (CAMEL_TYPE_INDEX_NAME, NULL);
+ idn->index = g_object_ref (idx);
return idn;
}
/* CamelIndexCursor */
/* ********************************************************************** */
-static CamelObjectClass *camel_index_cursor_parent;
+G_DEFINE_TYPE (CamelIndexCursor, camel_index_cursor, CAMEL_TYPE_OBJECT)
static void
-index_cursor_finalize (CamelIndexCursor *idc)
+index_cursor_dispose (GObject *object)
{
- if (idc->index)
- camel_object_unref (idc->index);
-}
+ CamelIndexCursor *index_cursor = CAMEL_INDEX_CURSOR (object);
-static void
-camel_index_cursor_class_init (CamelIndexCursorClass *klass)
-{
- camel_index_cursor_parent = CAMEL_OBJECT_CLASS(camel_type_get_global_classfuncs(camel_object_get_type()));
+ if (index_cursor->index != NULL) {
+ g_object_unref (index_cursor->index);
+ index_cursor->index = NULL;
+ }
+
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (camel_index_cursor_parent_class)->dispose (object);
}
static void
-camel_index_cursor_init (CamelIndexCursor *idc)
+camel_index_cursor_class_init (CamelIndexCursorClass *class)
{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = index_cursor_dispose;
}
-CamelType
-camel_index_cursor_get_type(void)
+static void
+camel_index_cursor_init (CamelIndexCursor *index_cursor)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelIndexCursor",
- sizeof (CamelIndexCursor),
- sizeof (CamelIndexCursorClass),
- (CamelObjectClassInitFunc) camel_index_cursor_class_init,
- NULL,
- (CamelObjectInitFunc) camel_index_cursor_init,
- (CamelObjectFinalizeFunc) index_cursor_finalize);
- }
-
- return type;
}
CamelIndexCursor *
{
CamelIndexCursor *idc;
- idc = (CamelIndexCursor *)camel_object_new(camel_index_cursor_get_type());
- idc->index = camel_object_ref (idx);
+ idc = g_object_new (CAMEL_TYPE_INDEX_CURSOR, NULL);
+ idc->index = g_object_ref (idx);
return idc;
}
#include <camel/camel-exception.h>
#include <camel/camel-object.h>
-#define CAMEL_INDEX(obj) CAMEL_CHECK_CAST (obj, camel_index_get_type (), CamelIndex)
-#define CAMEL_INDEX_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_index_get_type (), CamelIndexClass)
-#define CAMEL_IS_INDEX(obj) CAMEL_CHECK_TYPE (obj, camel_index_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_INDEX \
+ (camel_index_get_type ())
+#define CAMEL_INDEX(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_INDEX, CamelIndex))
+#define CAMEL_INDEX_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_INDEX, CamelIndexClass))
+#define CAMEL_IS_INDEX(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_INDEX))
+#define CAMEL_IS_INDEX_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_INDEX))
#define CAMEL_INDEX_GET_CLASS(obj) \
- ((CamelIndexClass *) CAMEL_OBJECT_GET_CLASS (obj))
-
-#define CAMEL_INDEX_NAME(obj) CAMEL_CHECK_CAST (obj, camel_index_name_get_type (), CamelIndexName)
-#define CAMEL_INDEX_NAME_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_index_name_get_type (), CamelIndexNameClass)
-#define CAMEL_IS_INDEX_NAME(obj) CAMEL_CHECK_TYPE (obj, camel_index_name_get_type ())
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_INDEX, CamelIndexClass))
+
+#define CAMEL_TYPE_INDEX_NAME \
+ (camel_index_name_get_type ())
+#define CAMEL_INDEX_NAME(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_INDEX_NAME, CamelIndexName))
+#define CAMEL_INDEX_NAME_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_INDEX_NAME, CamelIndexNameClass))
+#define CAMEL_IS_INDEX_NAME(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_INDEX_NAME))
+#define CAMEL_IS_INDEX_NAME_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_INDEX_NAME))
#define CAMEL_INDEX_NAME_GET_CLASS(obj) \
- ((CamelIndexNameClass *) CAMEL_OBJECT_GET_CLASS (obj))
-
-#define CAMEL_INDEX_CURSOR(obj) CAMEL_CHECK_CAST (obj, camel_index_cursor_get_type (), CamelIndexCursor)
-#define CAMEL_INDEX_CURSOR_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_index_cursor_get_type (), CamelIndexCursorClass)
-#define CAMEL_IS_INDEX_CURSOR(obj) CAMEL_CHECK_TYPE (obj, camel_index_cursor_get_type ())
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_INDEX_NAME, CamelIndexNameClass))
+
+#define CAMEL_TYPE_INDEX_CURSOR \
+ (camel_index_cursor_get_type ())
+#define CAMEL_INDEX_CURSOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_INDEX_CURSOR, CamelIndexCursor))
+#define CAMEL_INDEX_CURSOR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_INDEX_CURSOR, CamelIndexCursorClass))
+#define CAMEL_IS_INDEX_CURSOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_INDEX_CURSOR))
+#define CAMEL_IS_INDEX_CURSOR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_INDEX_CURSOR))
#define CAMEL_INDEX_CURSOR_GET_CLASS(obj) \
- ((CamelIndexCursorClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_INDEX_CURSOR, CamelIndexCursorClass))
G_BEGIN_DECLS
void (*reset) (CamelIndexCursor *idc);
};
-CamelType camel_index_cursor_get_type(void);
+GType camel_index_cursor_get_type(void);
CamelIndexCursor *camel_index_cursor_new(CamelIndex *index, const gchar *name);
gsize (*add_buffer)(CamelIndexName *name, const gchar *buffer, gsize len);
};
-CamelType camel_index_name_get_type (void);
+GType camel_index_name_get_type (void);
CamelIndexName *camel_index_name_new(CamelIndex *index, const gchar *name);
/* flags, stored in 'state', set with set_state */
#define CAMEL_INDEX_DELETED (1<<0)
-CamelType camel_index_get_type (void);
+GType camel_index_get_type (void);
CamelIndex * camel_index_new (const gchar *path,
gint flags);
void camel_index_construct (CamelIndex *index,
#define d(x)
-static CamelAddressClass *camel_internet_address_parent;
-
struct _address {
gchar *name;
gchar *address;
};
+G_DEFINE_TYPE (CamelInternetAddress, camel_internet_address, CAMEL_TYPE_ADDRESS)
+
static gint
internet_address_decode (CamelAddress *a, const gchar *raw)
{
{
CamelAddressClass *address_class;
- camel_internet_address_parent = CAMEL_ADDRESS_CLASS(camel_type_get_global_classfuncs(camel_address_get_type()));
-
address_class = CAMEL_ADDRESS_CLASS (class);
address_class->decode = internet_address_decode;
address_class->encode = internet_address_encode;
{
}
-CamelType
-camel_internet_address_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_address_get_type(), "CamelInternetAddress",
- sizeof (CamelInternetAddress),
- sizeof (CamelInternetAddressClass),
- (CamelObjectClassInitFunc) camel_internet_address_class_init,
- NULL,
- (CamelObjectInitFunc) camel_internet_address_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_internet_address_new:
*
CamelInternetAddress *
camel_internet_address_new (void)
{
- return CAMEL_INTERNET_ADDRESS(camel_object_new(camel_internet_address_get_type()));
+ return g_object_new (CAMEL_TYPE_INTERNET_ADDRESS, NULL);
}
/**
#include <camel/camel-address.h>
-#define CAMEL_INTERNET_ADDRESS(obj) CAMEL_CHECK_CAST (obj, camel_internet_address_get_type (), CamelInternetAddress)
-#define CAMEL_INTERNET_ADDRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_internet_address_get_type (), CamelInternetAddressClass)
-#define CAMEL_IS_INTERNET_ADDRESS(obj) CAMEL_CHECK_TYPE (obj, camel_internet_address_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_INTERNET_ADDRESS \
+ (camel_internet_address_get_type ())
+#define CAMEL_INTERNET_ADDRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_INTERNET_ADDRESS, CamelInternetAddress))
+#define CAMEL_INTERNET_ADDRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_INTERNET_ADDRESS, CamelInternetAddressClass))
+#define CAMEL_IS_INTERNET_ADDRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_INTERNET_ADDRESS))
+#define CAMEL_IS_INTERNET_ADDRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_INTERNET_ADDRESS))
+#define CAMEL_INTERNET_ADDRESS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_INTERNET_ADDRESS, CamelInternetAddressClass))
G_BEGIN_DECLS
CamelAddressClass parent_class;
};
-CamelType camel_internet_address_get_type (void);
+GType camel_internet_address_get_type (void);
CamelInternetAddress *
camel_internet_address_new (void);
gint camel_internet_address_add (CamelInternetAddress *addr,
#define d(x)
-static CamelDataWrapperClass *camel_medium_parent_class = NULL;
+#define CAMEL_MEDIUM_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MEDIUM, CamelMediumPrivate))
+
+struct _CamelMediumPrivate {
+ /* The content of the medium, as opposed to our parent
+ * CamelDataWrapper, which wraps both the headers and
+ * the content. */
+ CamelDataWrapper *content;
+};
+
+enum {
+ PROP_0,
+ PROP_CONTENT
+};
+
+G_DEFINE_ABSTRACT_TYPE (CamelMedium, camel_medium, CAMEL_TYPE_DATA_WRAPPER)
+
+static void
+medium_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_CONTENT:
+ camel_medium_set_content (
+ CAMEL_MEDIUM (object),
+ g_value_get_object (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+medium_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_CONTENT:
+ g_value_set_object (
+ value, camel_medium_get_content (
+ CAMEL_MEDIUM (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
static void
-medium_finalize (CamelObject *object)
+medium_dispose (GObject *object)
{
- CamelMedium *medium = CAMEL_MEDIUM (object);
+ CamelMediumPrivate *priv;
- if (medium->content != NULL)
- camel_object_unref (medium->content);
+ priv = CAMEL_MEDIUM_GET_PRIVATE (object);
+
+ if (priv->content != NULL) {
+ g_object_unref (priv->content);
+ priv->content = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_medium_parent_class)->dispose (object);
}
static gboolean
CamelDataWrapper *content)
{
if (content != NULL)
- camel_object_ref (content);
+ g_object_ref (content);
+
+ if (medium->priv->content != NULL)
+ g_object_unref (medium->priv->content);
- if (medium->content != NULL)
- camel_object_unref (medium->content);
+ medium->priv->content = content;
- medium->content = content;
+ g_object_notify (G_OBJECT (medium), "content");
}
static CamelDataWrapper *
medium_get_content (CamelMedium *medium)
{
- return medium->content;
+ return medium->priv->content;
}
static void
camel_medium_class_init (CamelMediumClass *class)
{
+ GObjectClass *object_class;
CamelDataWrapperClass *data_wrapper_class;
- camel_medium_parent_class = CAMEL_DATA_WRAPPER_CLASS (camel_type_get_global_classfuncs (camel_data_wrapper_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMediumPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = medium_set_property;
+ object_class->get_property = medium_get_property;
+ object_class->dispose = medium_dispose;
data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (class);
data_wrapper_class->is_offline = medium_is_offline;
class->set_content = medium_set_content;
class->get_content = medium_get_content;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_CONTENT,
+ g_param_spec_object (
+ "content",
+ "Content",
+ NULL,
+ CAMEL_TYPE_DATA_WRAPPER,
+ G_PARAM_READWRITE));
}
static void
camel_medium_init (CamelMedium *medium)
{
-}
-
-CamelType
-camel_medium_get_type (void)
-{
- static CamelType camel_medium_type = CAMEL_INVALID_TYPE;
-
- if (camel_medium_type == CAMEL_INVALID_TYPE) {
- camel_medium_type = camel_type_register (CAMEL_DATA_WRAPPER_TYPE, "medium",
- sizeof (CamelMedium),
- sizeof (CamelMediumClass),
- (CamelObjectClassInitFunc) camel_medium_class_init,
- NULL,
- (CamelObjectInitFunc) camel_medium_init,
- (CamelObjectFinalizeFunc) medium_finalize);
- }
-
- return camel_medium_type;
+ medium->priv = CAMEL_MEDIUM_GET_PRIVATE (medium);
}
/**
#include <camel/camel-data-wrapper.h>
-#define CAMEL_MEDIUM_TYPE (camel_medium_get_type ())
-#define CAMEL_MEDIUM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MEDIUM_TYPE, CamelMedium))
-#define CAMEL_MEDIUM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MEDIUM_TYPE, CamelMediumClass))
-#define CAMEL_IS_MEDIUM(o) (CAMEL_CHECK_TYPE((o), CAMEL_MEDIUM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MEDIUM \
+ (camel_medium_get_type ())
+#define CAMEL_MEDIUM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MEDIUM, CamelMedium))
+#define CAMEL_MEDIUM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MEDIUM, CamelMediumClass))
+#define CAMEL_IS_MEDIUM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MEDIUM))
+#define CAMEL_IS_MEDIUM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MEDIUM))
#define CAMEL_MEDIUM_GET_CLASS(obj) \
- ((CamelMediumClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MEDIUM, CamelMediumClass))
G_BEGIN_DECLS
typedef struct _CamelMedium CamelMedium;
typedef struct _CamelMediumClass CamelMediumClass;
+typedef struct _CamelMediumPrivate CamelMediumPrivate;
typedef struct {
const gchar *name;
struct _CamelMedium {
CamelDataWrapper parent;
-
- /* The content of the medium, as opposed to our parent
- * CamelDataWrapper, which wraps both the headers and the
- * content.
- */
- CamelDataWrapper *content;
+ CamelMediumPrivate *priv;
};
struct _CamelMediumClass {
CamelDataWrapper *content);
};
-CamelType camel_medium_get_type (void);
+GType camel_medium_get_type (void);
void camel_medium_add_header (CamelMedium *medium,
const gchar *name,
gconstpointer value);
#include "camel-mime-filter-basic.h"
#include "camel-mime-utils.h"
-static CamelMimeFilterClass *camel_mime_filter_basic_parent;
+#define CAMEL_MIME_FILTER_BASIC_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BASIC, CamelMimeFilterBasicPrivate))
struct _CamelMimeFilterBasicPrivate {
CamelMimeFilterBasicType type;
gint save;
};
-static void
-mime_filter_basic_finalize (CamelMimeFilterBasic *filter)
-{
- g_free (filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterBasic, camel_mime_filter_basic, CAMEL_TYPE_MIME_FILTER)
/* here we do all of the basic mime filtering */
static void
CamelMimeFilterBasicPrivate *priv;
gsize newlen;
- priv = CAMEL_MIME_FILTER_BASIC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_BASIC_GET_PRIVATE (mime_filter);
switch (priv->type) {
case CAMEL_MIME_FILTER_BASIC_BASE64_ENC:
CamelMimeFilterBasicPrivate *priv;
gsize newlen = 0;
- priv = CAMEL_MIME_FILTER_BASIC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_BASIC_GET_PRIVATE (mime_filter);
switch (priv->type) {
case CAMEL_MIME_FILTER_BASIC_BASE64_ENC:
{
CamelMimeFilterBasicPrivate *priv;
- priv = CAMEL_MIME_FILTER_BASIC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_BASIC_GET_PRIVATE (mime_filter);
switch (priv->type) {
case CAMEL_MIME_FILTER_BASIC_QP_ENC:
{
CamelMimeFilterClass *mime_filter_class;
- camel_mime_filter_basic_parent = CAMEL_MIME_FILTER_CLASS(camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterBasicPrivate));
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_basic_filter;
static void
camel_mime_filter_basic_init (CamelMimeFilterBasic *filter)
{
- filter->priv = g_new0 (CamelMimeFilterBasicPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_basic_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterBasic",
- sizeof (CamelMimeFilterBasic),
- sizeof (CamelMimeFilterBasicClass),
- (CamelObjectClassInitFunc) camel_mime_filter_basic_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_basic_init,
- (CamelObjectFinalizeFunc) mime_filter_basic_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_BASIC_GET_PRIVATE (filter);
}
/**
case CAMEL_MIME_FILTER_BASIC_QP_DEC:
case CAMEL_MIME_FILTER_BASIC_UU_ENC:
case CAMEL_MIME_FILTER_BASIC_UU_DEC:
- new = CAMEL_MIME_FILTER (camel_object_new (camel_mime_filter_basic_get_type ()));
+ new = g_object_new (CAMEL_TYPE_MIME_FILTER_BASIC, NULL);
CAMEL_MIME_FILTER_BASIC (new)->priv->type = type;
break;
default:
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_BASIC(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_basic_get_type (), CamelMimeFilterBasic)
-#define CAMEL_MIME_FILTER_BASIC_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_basic_get_type (), CamelMimeFilterBasicClass)
-#define CAMEL_IS_MIME_FILTER_BASIC(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_basic_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_BASIC \
+ (camel_mime_filter_basic_get_type ())
+#define CAMEL_MIME_FILTER_BASIC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BASIC, CamelMimeFilterBasic))
+#define CAMEL_MIME_FILTER_BASIC_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_BASIC, CamelMimeFilterBasicClass))
+#define CAMEL_IS_MIME_FILTER_BASIC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BASIC))
+#define CAMEL_IS_MIME_FILTER_BASIC_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_BASIC))
+#define CAMEL_MIME_FILTER_BASIC_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BASIC, CamelMimeFilterBasicClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_basic_get_type(void);
+GType camel_mime_filter_basic_get_type(void);
CamelMimeFilter *
camel_mime_filter_basic_new (CamelMimeFilterBasicType type);
#include "camel-mime-filter-bestenc.h"
-static CamelMimeFilterClass *camel_mime_filter_bestenc_parent;
+#define CAMEL_MIME_FILTER_BESTENC_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BESTENC, CamelMimeFilterBestencPrivate))
struct _CamelMimeFilterBestencPrivate {
CamelCharset charset; /* used to determine the best charset to use */
};
-static void
-mime_filter_bestenc_finalize (CamelMimeFilterBestenc *mime_filter)
-{
- g_free (mime_filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterBestenc, camel_mime_filter_bestenc, CAMEL_TYPE_MIME_FILTER)
static void
mime_filter_bestenc_filter (CamelMimeFilter *mime_filter,
CamelMimeFilterBestencPrivate *priv;
register guchar *p, *pend;
- priv = CAMEL_MIME_FILTER_BESTENC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_BESTENC_GET_PRIVATE (mime_filter);
if (len == 0)
goto donothing;
{
CamelMimeFilterBestencPrivate *priv;
- priv = CAMEL_MIME_FILTER_BESTENC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_BESTENC_GET_PRIVATE (mime_filter);
mime_filter_bestenc_filter (
mime_filter, in, len, prespace, out, outlen, outprespace);
{
CamelMimeFilterBestencPrivate *priv;
- priv = CAMEL_MIME_FILTER_BESTENC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_BESTENC_GET_PRIVATE (mime_filter);
priv->count0 = 0;
priv->count8 = 0;
{
CamelMimeFilterClass *mime_filter_class;
- camel_mime_filter_bestenc_parent = (CamelMimeFilterClass *)(camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterBestencPrivate));
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_bestenc_filter;
static void
camel_mime_filter_bestenc_init (CamelMimeFilterBestenc *filter)
{
- filter->priv = g_new0 (CamelMimeFilterBestencPrivate, 1);
+ filter->priv = CAMEL_MIME_FILTER_BESTENC_GET_PRIVATE (filter);
mime_filter_bestenc_reset (CAMEL_MIME_FILTER (filter));
}
-CamelType
-camel_mime_filter_bestenc_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterBestenc",
- sizeof (CamelMimeFilterBestenc),
- sizeof (CamelMimeFilterBestencClass),
- (CamelObjectClassInitFunc) camel_mime_filter_bestenc_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_bestenc_init,
- (CamelObjectFinalizeFunc) mime_filter_bestenc_finalize);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_bestenc_new:
* @flags: a bitmask of data required.
{
CamelMimeFilter *new;
- new = (CamelMimeFilter *)camel_object_new(camel_mime_filter_bestenc_get_type());
+ new = g_object_new (CAMEL_TYPE_MIME_FILTER_BESTENC, NULL);
CAMEL_MIME_FILTER_BESTENC (new)->priv->flags = flags;
return new;
CamelTransferEncoding bestenc;
gint istext;
- priv = CAMEL_MIME_FILTER_BESTENC (filter)->priv;
+ priv = CAMEL_MIME_FILTER_BESTENC_GET_PRIVATE (filter);
istext = (required & CAMEL_BESTENC_TEXT) ? 1 : 0;
required = required & ~CAMEL_BESTENC_TEXT;
#include <camel/camel-mime-part.h>
#include <camel/camel-charset-map.h>
-#define CAMEL_MIME_FILTER_BESTENC(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_bestenc_get_type (), CamelMimeFilterBestenc)
-#define CAMEL_MIME_FILTER_BESTENC_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_bestenc_get_type (), CamelMimeFilterBestencClass)
-#define CAMEL_IS_MIME_FILTER_BESTENC(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_bestenc_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_BESTENC \
+ (camel_mime_filter_bestenc_get_type ())
+#define CAMEL_MIME_FILTER_BESTENC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BESTENC, CamelMimeFilterBestenc))
+#define CAMEL_MIME_FILTER_BESTENC_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_BESTENC, CamelMimeFilterBestencClass))
+#define CAMEL_IS_MIME_FILTER_BESTENC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BESTENC))
+#define CAMEL_IS_MIME_FILTER_BESTENC_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_BESTENC))
+#define CAMEL_MIME_FILTER_BESTENC_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_BESTENC, CamelMimeFilterBestencClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_bestenc_get_type (void);
+GType camel_mime_filter_bestenc_get_type (void);
CamelMimeFilter *
camel_mime_filter_bestenc_new (guint flags);
CamelTransferEncoding
#include "camel-mime-filter-canon.h"
+#define CAMEL_MIME_FILTER_CANON_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CANON, CamelMimeFilterCanonPrivate))
+
struct _CamelMimeFilterCanonPrivate {
guint32 flags;
};
-static void
-mime_filter_canon_finalize (CamelMimeFilterCanon *mime_filter)
-{
- g_free (mime_filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterCanon, camel_mime_filter_canon, CAMEL_TYPE_MIME_FILTER)
static void
mime_filter_canon_run (CamelMimeFilter *mime_filter,
register gchar *o;
gint lf = 0;
- priv = CAMEL_MIME_FILTER_CANON (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_CANON_GET_PRIVATE (mime_filter);
/* first, work out how much space we need */
inptr = (guchar *)in;
{
CamelMimeFilterClass *mime_filter_class;
+ g_type_class_add_private (class, sizeof (CamelMimeFilterCanonPrivate));
+
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_canon_filter;
mime_filter_class->complete = mime_filter_canon_complete;
static void
camel_mime_filter_canon_init (CamelMimeFilterCanon *filter)
{
- filter->priv = g_new0 (CamelMimeFilterCanonPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_canon_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type(), "CamelMimeFilterCanon",
- sizeof (CamelMimeFilterCanon),
- sizeof (CamelMimeFilterCanonClass),
- (CamelObjectClassInitFunc) camel_mime_filter_canon_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_canon_init,
- (CamelObjectFinalizeFunc) mime_filter_canon_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_CANON_GET_PRIVATE (filter);
}
/**
{
CamelMimeFilter *filter;
- filter = CAMEL_MIME_FILTER (camel_object_new (CAMEL_MIME_FILTER_CANON_TYPE));
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_CANON, NULL);
CAMEL_MIME_FILTER_CANON (filter)->priv->flags = flags;
return filter;
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_CANON_TYPE (camel_mime_filter_canon_get_type ())
-#define CAMEL_MIME_FILTER_CANON(obj) CAMEL_CHECK_CAST (obj, CAMEL_MIME_FILTER_CANON_TYPE, CamelMimeFilterCanon)
-#define CAMEL_MIME_FILTER_CANON_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, CAMEL_MIME_FILTER_CANON_TYPE, CamelMimeFilterCanonClass)
-#define CAMEL_IS_MIME_FILTER_CANON(obj) CAMEL_CHECK_TYPE (obj, CAMEL_MIME_FILTER_CANON_TYPE)
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_CANON \
+ (camel_mime_filter_canon_get_type ())
+#define CAMEL_MIME_FILTER_CANON(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CANON, CamelMimeFilterCanon))
+#define CAMEL_MIME_FILTER_CANON_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_CANON, CamelMimeFilterCanonClass))
+#define CAMEL_IS_MIME_FILTER_CANON(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CANON))
+#define CAMEL_IS_MIME_FILTER_CANON_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_CANON))
+#define CAMEL_MIME_FILTER_CANON_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CANON, CamelMimeFilterCanonClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_canon_get_type(void);
-
+GType camel_mime_filter_canon_get_type(void);
CamelMimeFilter *
camel_mime_filter_canon_new (guint32 flags);
#include "camel-iconv.h"
#include "camel-mime-filter-charset.h"
+#define CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CHARSET, CamelMimeFilterCharsetPrivate))
+
#define d(x)
#define w(x)
gchar *to;
};
-static CamelMimeFilterClass *camel_mime_filter_charset_parent;
+G_DEFINE_TYPE (CamelMimeFilterCharset, camel_mime_filter_charset, CAMEL_TYPE_MIME_FILTER)
static void
-mime_filter_charset_finalize (CamelMimeFilterCharset *filter)
+mime_filter_charset_finalize (GObject *object)
{
CamelMimeFilterCharsetPrivate *priv;
- priv = CAMEL_MIME_FILTER_CHARSET (filter)->priv;
+ priv = CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE (object);
g_free (priv->from);
g_free (priv->to);
camel_iconv_close (priv->ic);
priv->ic = (iconv_t) -1;
}
- g_free (priv);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_filter_charset_parent_class)->finalize (object);
}
static void
const gchar *inbuf;
gchar *outbuf;
- priv = CAMEL_MIME_FILTER_CHARSET (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE (mime_filter);
if (priv->ic == (iconv_t) -1)
goto noop;
const gchar *inbuf;
gchar *outbuf;
- priv = CAMEL_MIME_FILTER_CHARSET (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE (mime_filter);
if (priv->ic == (iconv_t) -1)
goto noop;
gchar *buffer;
gsize outlen = 16;
- priv = CAMEL_MIME_FILTER_CHARSET (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE (mime_filter);
/* what happens with the output bytes if this resets the state? */
if (priv->ic != (iconv_t) -1) {
static void
camel_mime_filter_charset_class_init (CamelMimeFilterCharsetClass *class)
{
+ GObjectClass *object_class;
CamelMimeFilterClass *mime_filter_class;
- camel_mime_filter_charset_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterCharsetPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = mime_filter_charset_finalize;
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_charset_filter;
static void
camel_mime_filter_charset_init (CamelMimeFilterCharset *filter)
{
- filter->priv = g_new0 (CamelMimeFilterCharsetPrivate, 1);
+ filter->priv = CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE (filter);
filter->priv->ic = (iconv_t) -1;
}
-CamelType
-camel_mime_filter_charset_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterCharset",
- sizeof (CamelMimeFilterCharset),
- sizeof (CamelMimeFilterCharsetClass),
- (CamelObjectClassInitFunc) camel_mime_filter_charset_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_charset_init,
- (CamelObjectFinalizeFunc) mime_filter_charset_finalize);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_charset_new:
* @from_charset: charset to convert from
CamelMimeFilter *new;
CamelMimeFilterCharsetPrivate *priv;
- new = CAMEL_MIME_FILTER (camel_object_new (camel_mime_filter_charset_get_type ()));
- priv = CAMEL_MIME_FILTER_CHARSET (new)->priv;
+ new = g_object_new (CAMEL_TYPE_MIME_FILTER_CHARSET, NULL);
+ priv = CAMEL_MIME_FILTER_CHARSET_GET_PRIVATE (new);
priv->ic = camel_iconv_open (to_charset, from_charset);
if (priv->ic == (iconv_t) -1) {
from_charset ? from_charset : "(null)",
to_charset ? to_charset : "(null)",
g_strerror (errno)));
- camel_object_unref (new);
+ g_object_unref (new);
new = NULL;
} else {
priv->from = g_strdup (from_charset);
#include <camel/camel-mime-filter.h>
#include <iconv.h>
-#define CAMEL_MIME_FILTER_CHARSET(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_charset_get_type (), CamelMimeFilterCharset)
-#define CAMEL_MIME_FILTER_CHARSET_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_charset_get_type (), CamelMimeFilterCharsetClass)
-#define CAMEL_IS_MIME_FILTER_CHARSET(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_charset_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_CHARSET \
+ (camel_mime_filter_charset_get_type ())
+#define CAMEL_MIME_FILTER_CHARSET(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CHARSET, CamelMimeFilterCharset))
+#define CAMEL_MIME_FILTER_CHARSET_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_CHARSET, CamelMimeFilterCharsetClass))
+#define CAMEL_IS_MIME_FILTER_CHARSET(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CHARSET))
+#define CAMEL_IS_MIME_FILTER_CHARSET_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_CHARSET))
+#define CAMEL_MIME_FILTER_CHARSET_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CHARSET, CamelMimeFilterCharsetClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_charset_get_type (void);
+GType camel_mime_filter_charset_get_type (void);
CamelMimeFilter *
camel_mime_filter_charset_new (const gchar *from_charset,
const gchar *to_charset);
#include "camel-mime-filter-crlf.h"
+#define CAMEL_MIME_FILTER_CRLF_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CRLF, CamelMimeFilterCRLFPrivate))
+
struct _CamelMimeFilterCRLFPrivate {
CamelMimeFilterCRLFDirection direction;
CamelMimeFilterCRLFMode mode;
gboolean saw_dot;
};
-static void
-mime_filter_crlf_finalize (CamelMimeFilterCRLF *filter)
-{
- g_free (filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterCRLF, camel_mime_filter_crlf, CAMEL_TYPE_MIME_FILTER)
static void
mime_filter_crlf_filter (CamelMimeFilter *mime_filter,
gboolean do_dots;
gchar *outptr;
- priv = CAMEL_MIME_FILTER_CRLF (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_CRLF_GET_PRIVATE (mime_filter);
do_dots = priv->mode == CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS;
{
CamelMimeFilterCRLFPrivate *priv;
- priv = CAMEL_MIME_FILTER_CRLF (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_CRLF_GET_PRIVATE (mime_filter);
priv->saw_cr = FALSE;
priv->saw_lf = TRUE;
{
CamelMimeFilterClass *mime_filter_class;
+ g_type_class_add_private (class, sizeof (CamelMimeFilterCRLFPrivate));
+
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_crlf_filter;
mime_filter_class->complete = mime_filter_crlf_complete;
static void
camel_mime_filter_crlf_init (CamelMimeFilterCRLF *filter)
{
- filter->priv = g_new0 (CamelMimeFilterCRLFPrivate, 1);
+ filter->priv = CAMEL_MIME_FILTER_CRLF_GET_PRIVATE (filter);
filter->priv->saw_cr = FALSE;
filter->priv->saw_lf = TRUE;
filter->priv->saw_dot = FALSE;
}
-CamelType
-camel_mime_filter_crlf_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type(), "CamelMimeFilterCRLF",
- sizeof (CamelMimeFilterCRLF),
- sizeof (CamelMimeFilterCRLFClass),
- (CamelObjectClassInitFunc) camel_mime_filter_crlf_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_crlf_init,
- (CamelObjectFinalizeFunc) mime_filter_crlf_finalize);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_crlf_new:
* @direction: encode vs decode
CamelMimeFilter *filter;
CamelMimeFilterCRLFPrivate *priv;
- filter = CAMEL_MIME_FILTER (camel_object_new (CAMEL_MIME_FILTER_CRLF_TYPE));
- priv = CAMEL_MIME_FILTER_CRLF (filter)->priv;
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_CRLF, NULL);
+ priv = CAMEL_MIME_FILTER_CRLF_GET_PRIVATE (filter);
priv->direction = direction;
priv->mode = mode;
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_CRLF_TYPE (camel_mime_filter_crlf_get_type ())
-#define CAMEL_MIME_FILTER_CRLF(obj) CAMEL_CHECK_CAST (obj, CAMEL_MIME_FILTER_CRLF_TYPE, CamelMimeFilterCRLF)
-#define CAMEL_MIME_FILTER_CRLF_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, CAMEL_MIME_FILTER_CRLF_TYPE, CamelMimeFilterCRLFClass)
-#define CAMEL_IS_MIME_FILTER_CRLF(obj) CAMEL_CHECK_TYPE (obj, CAMEL_MIME_FILTER_CRLF_TYPE)
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_CRLF \
+ (camel_mime_filter_crlf_get_type ())
+#define CAMEL_MIME_FILTER_CRLF(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CRLF, CamelMimeFilterCRLF))
+#define CAMEL_MIME_FILTER_CRLF_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_CRLF, CamelMimeFilterCRLFClass))
+#define CAMEL_IS_MIME_FILTER_CRLF(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CRLF))
+#define CAMEL_IS_MIME_FILTER_CRLF_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_CRLF))
+#define CAMEL_MIME_FILTER_CRLF_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_CRLF, CamelMimeFilterCRLFClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_crlf_get_type (void);
+GType camel_mime_filter_crlf_get_type (void);
CamelMimeFilter *
camel_mime_filter_crlf_new (CamelMimeFilterCRLFDirection direction,
CamelMimeFilterCRLFMode mode);
#include "camel-mime-filter-enriched.h"
#include "camel-string-utils.h"
+#define CAMEL_MIME_FILTER_ENRICHED_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_ENRICHED, CamelMimeFilterEnrichedPrivate))
+
struct _CamelMimeFilterEnrichedPrivate {
guint32 flags;
gint nofill;
static GHashTable *enriched_hash = NULL;
-static CamelMimeFilterClass *parent_class = NULL;
-
-static void
-mime_filter_enriched_finalize (CamelMimeFilterEnriched *filter)
-{
- g_free (filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterEnriched, camel_mime_filter_enriched, CAMEL_TYPE_MIME_FILTER)
#if 0
static gboolean
register const gchar *inptr;
register gchar *outptr;
- priv = CAMEL_MIME_FILTER_ENRICHED (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_ENRICHED_GET_PRIVATE (mime_filter);
camel_mime_filter_set_size (mime_filter, inlen * 2 + 6, FALSE);
{
CamelMimeFilterEnrichedPrivate *priv;
- priv = CAMEL_MIME_FILTER_ENRICHED (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_ENRICHED_GET_PRIVATE (mime_filter);
priv->nofill = 0;
}
CamelMimeFilterClass *mime_filter_class;
gint i;
- parent_class = CAMEL_MIME_FILTER_CLASS (camel_mime_filter_get_type ());
+ g_type_class_add_private (class, sizeof (CamelMimeFilterEnrichedPrivate));
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_enriched_filter;
static void
camel_mime_filter_enriched_init (CamelMimeFilterEnriched *filter)
{
- filter->priv = g_new0 (CamelMimeFilterEnrichedPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_enriched_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterEnriched",
- sizeof (CamelMimeFilterEnriched),
- sizeof (CamelMimeFilterEnrichedClass),
- (CamelObjectClassInitFunc) camel_mime_filter_enriched_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_enriched_init,
- (CamelObjectFinalizeFunc) mime_filter_enriched_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_ENRICHED_GET_PRIVATE (filter);
}
/**
CamelMimeFilter *new;
CamelMimeFilterEnrichedPrivate *priv;
- new = CAMEL_MIME_FILTER (camel_object_new (CAMEL_TYPE_MIME_FILTER_ENRICHED));
- priv = CAMEL_MIME_FILTER_ENRICHED (new)->priv;
+ new = g_object_new (CAMEL_TYPE_MIME_FILTER_ENRICHED, NULL);
+ priv = CAMEL_MIME_FILTER_ENRICHED_GET_PRIVATE (new);
priv->flags = flags;
camel_mime_filter_complete(filter, (gchar *)in, strlen(in), 0, &outbuf, &outlen, &outpre);
outbuf = g_strndup (outbuf, outlen);
- camel_object_unref (filter);
+ g_object_unref (filter);
return outbuf;
}
#include <camel/camel-mime-filter.h>
-#define CAMEL_TYPE_MIME_FILTER_ENRICHED (camel_mime_filter_enriched_get_type ())
-#define CAMEL_MIME_FILTER_ENRICHED(obj) (CAMEL_CHECK_CAST (obj, CAMEL_TYPE_MIME_FILTER_ENRICHED, CamelMimeFilterEnriched))
-#define CAMEL_MIME_FILTER_ENRICHED_CLASS(klass) (CAMEL_CHECK_CLASS_CAST (klass, CAMEL_TYPE_MIME_FILTER_ENRICHED, CamelMimeFilterEnrichedClass))
-#define CAMEL_IS_MIME_FILTER_ENRICHED(obj) (CAMEL_CHECK_TYPE (obj, CAMEL_TYPE_MIME_FILTER_ENRICHED))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_ENRICHED \
+ (camel_mime_filter_enriched_get_type ())
+#define CAMEL_MIME_FILTER_ENRICHED(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_ENRICHED, CamelMimeFilterEnriched))
+#define CAMEL_MIME_FILTER_ENRICHED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_ENRICHED, CamelMimeFilterEnrichedClass))
+#define CAMEL_IS_MIME_FILTER_ENRICHED(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_ENRICHED))
+#define CAMEL_IS_MIME_FILTER_ENRICHED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_ENRICHED))
+#define CAMEL_MIME_FILTER_ENRICHED_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_ENRICHED, CamelMimeFilterEnrichedClass))
#define CAMEL_MIME_FILTER_ENRICHED_IS_RICHTEXT (1 << 0)
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_enriched_get_type (void);
+GType camel_mime_filter_enriched_get_type (void);
CamelMimeFilter *
camel_mime_filter_enriched_new (guint32 flags);
gchar * camel_enriched_to_html (const gchar *in,
#include "camel-mime-filter-from.h"
-#define d(x)
+#define CAMEL_MIME_FILTER_FROM_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_FROM, CamelMimeFilterFromPrivate))
-static CamelMimeFilterClass *camel_mime_filter_from_parent;
+#define d(x)
struct _CamelMimeFilterFromPrivate {
gboolean midline; /* are we between lines? */
const gchar *pointer;
};
-static void
-mime_filter_from_finalize (CamelMimeFilterFrom *filter)
-{
- g_free (filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterFrom, camel_mime_filter_from, CAMEL_TYPE_MIME_FILTER)
/* Yes, it is complicated ... */
static void
struct fromnode *head = NULL, *tail = (struct fromnode *)&head, *node;
gchar *outptr;
- priv = CAMEL_MIME_FILTER_FROM (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_FROM_GET_PRIVATE (mime_filter);
inptr = in;
inend = inptr+len;
{
CamelMimeFilterClass *mime_filter_class;
- camel_mime_filter_from_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterFromPrivate));
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_from_filter;
static void
camel_mime_filter_from_init (CamelMimeFilterFrom *filter)
{
- filter->priv = g_new0 (CamelMimeFilterFromPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_from_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterFrom",
- sizeof (CamelMimeFilterFrom),
- sizeof (CamelMimeFilterFromClass),
- (CamelObjectClassInitFunc) camel_mime_filter_from_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_from_init,
- (CamelObjectFinalizeFunc) mime_filter_from_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_FROM_GET_PRIVATE (filter);
}
/**
*
* Returns: a new #CamelMimeFilterFrom object
**/
-CamelMimeFilter*
+CamelMimeFilter *
camel_mime_filter_from_new (void)
{
- return (CamelMimeFilter *) camel_object_new (camel_mime_filter_from_get_type ());
+ return g_object_new (CAMEL_TYPE_MIME_FILTER_FROM, NULL);
}
#if 0
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_FROM(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_from_get_type (), CamelMimeFilterFrom)
-#define CAMEL_MIME_FILTER_FROM_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_from_get_type (), CamelMimeFilterFromClass)
-#define CAMEL_IS_MIME_FILTER_FROM(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_from_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_FROM \
+ (camel_mime_filter_from_get_type ())
+#define CAMEL_MIME_FILTER_FROM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_FROM, CamelMimeFilterFrom))
+#define CAMEL_MIME_FILTER_FROM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_FROM, CamelMimeFilterFromClass))
+#define CAMEL_IS_MIME_FILTER_FROM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_FROM))
+#define CAMEL_IS_MIME_FILTER_FROM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_FROM))
+#define CAMEL_MIME_FILTER_FROM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_FROM, CamelMimeFilterFromClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_from_get_type (void);
+GType camel_mime_filter_from_get_type (void);
CamelMimeFilter *
camel_mime_filter_from_new (void);
#include "camel-mime-filter-gzip.h"
+#define CAMEL_MIME_FILTER_GZIP_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZipPrivate))
+
/* rfc1952 */
enum {
guint32 isize;
};
-static CamelMimeFilterClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelMimeFilterGZip, camel_mime_filter_gzip, CAMEL_TYPE_MIME_FILTER)
static void
gzip_filter (CamelMimeFilter *mime_filter,
CamelMimeFilterGZipPrivate *priv;
gint retval;
- priv = CAMEL_MIME_FILTER_GZIP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (mime_filter);
if (!priv->state.zip.wrote_hdr) {
priv->hdr.v.id1 = 31;
guint16 need, val;
gint retval;
- priv = CAMEL_MIME_FILTER_GZIP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (mime_filter);
if (!priv->state.unzip.got_hdr) {
if (len < 10) {
}
static void
-mime_filter_gzip_finalize (CamelObject *object)
+mime_filter_gzip_finalize (GObject *object)
{
CamelMimeFilterGZipPrivate *priv;
- priv = CAMEL_MIME_FILTER_GZIP (object)->priv;
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (object);
if (priv->mode == CAMEL_MIME_FILTER_GZIP_MODE_ZIP)
deflateEnd (priv->stream);
inflateEnd (priv->stream);
g_free (priv->stream);
- g_free (priv);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_filter_gzip_parent_class)->finalize (object);
}
static void
{
CamelMimeFilterGZipPrivate *priv;
- priv = CAMEL_MIME_FILTER_GZIP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (mime_filter);
if (priv->mode == CAMEL_MIME_FILTER_GZIP_MODE_ZIP)
gzip_filter (
{
CamelMimeFilterGZipPrivate *priv;
- priv = CAMEL_MIME_FILTER_GZIP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (mime_filter);
if (priv->mode == CAMEL_MIME_FILTER_GZIP_MODE_ZIP)
gzip_filter (
{
CamelMimeFilterGZipPrivate *priv;
- priv = CAMEL_MIME_FILTER_GZIP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (mime_filter);
memset (&priv->state, 0, sizeof (priv->state));
static void
camel_mime_filter_gzip_class_init (CamelMimeFilterGZipClass *class)
{
+ GObjectClass *object_class;
CamelMimeFilterClass *mime_filter_class;
- parent_class = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterGZipPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = mime_filter_gzip_finalize;
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_gzip_filter;
static void
camel_mime_filter_gzip_init (CamelMimeFilterGZip *mime_filter)
{
- mime_filter->priv = g_new0 (CamelMimeFilterGZipPrivate, 1);
+ mime_filter->priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (mime_filter);
mime_filter->priv->stream = g_new0 (z_stream, 1);
mime_filter->priv->crc32 = crc32 (0, Z_NULL, 0);
}
-CamelType
-camel_mime_filter_gzip_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterGZip",
- sizeof (CamelMimeFilterGZip),
- sizeof (CamelMimeFilterGZipClass),
- (CamelObjectClassInitFunc) camel_mime_filter_gzip_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_gzip_init,
- (CamelObjectFinalizeFunc) mime_filter_gzip_finalize);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_gzip_new:
* @mode: zip or unzip
CamelMimeFilterGZipPrivate *priv;
gint retval;
- new = (CamelMimeFilter *) camel_object_new (CAMEL_TYPE_MIME_FILTER_GZIP);
- priv = CAMEL_MIME_FILTER_GZIP (new)->priv;
+ new = g_object_new (CAMEL_TYPE_MIME_FILTER_GZIP, NULL);
+ priv = CAMEL_MIME_FILTER_GZIP_GET_PRIVATE (new);
priv->mode = mode;
priv->level = level;
retval = inflateInit2 (priv->stream, -MAX_WBITS);
if (retval != Z_OK) {
- camel_object_unref (new);
+ g_object_unref (new);
return NULL;
}
- return (CamelMimeFilter *) new;
+ return new;
}
#include <camel/camel-mime-filter.h>
-#define CAMEL_TYPE_MIME_FILTER_GZIP (camel_mime_filter_gzip_get_type ())
-#define CAMEL_MIME_FILTER_GZIP(obj) (CAMEL_CHECK_CAST ((obj), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZip))
-#define CAMEL_MIME_FILTER_GZIP_CLASS(klass) (CAMEL_CHECK_CLASS_CAST ((klass), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZipClass))
-#define CAMEL_IS_MIME_FILTER_GZIP(obj) (CAMEL_CHECK_TYPE ((obj), CAMEL_TYPE_MIME_FILTER_GZIP))
-#define CAMEL_IS_MIME_FILTER_GZIP_CLASS(klass) (CAMEL_CHECK_CLASS_TYPE ((klass), CAMEL_TYPE_MIME_FILTER_GZIP))
-#define CAMEL_MIME_FILTER_GZIP_GET_CLASS(obj) (CAMEL_CHECK_GET_CLASS ((obj), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZipClass))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_GZIP \
+ (camel_mime_filter_gzip_get_type ())
+#define CAMEL_MIME_FILTER_GZIP(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZip))
+#define CAMEL_MIME_FILTER_GZIP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZipClass))
+#define CAMEL_IS_MIME_FILTER_GZIP(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_GZIP))
+#define CAMEL_IS_MIME_FILTER_GZIP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_GZIP))
+#define CAMEL_MIME_FILTER_GZIP_GET_CLASS(obj) \
+ (CAMEL_CHECK_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_GZIP, CamelMimeFilterGZipClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_gzip_get_type (void);
+GType camel_mime_filter_gzip_get_type (void);
CamelMimeFilter *
camel_mime_filter_gzip_new (CamelMimeFilterGZipMode mode,
gint level);
#define d(x)
-static CamelMimeFilterClass *camel_mime_filter_html_parent;
+#define CAMEL_MIME_FILTER_HTML_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_HTML, CamelMimeFilterHTMLPrivate))
struct _CamelMimeFilterHTMLPrivate {
CamelHTMLParser *ctxt;
};
+G_DEFINE_TYPE (CamelMimeFilterHTML, camel_mime_filter_html, CAMEL_TYPE_MIME_FILTER)
+
/* ********************************************************************** */
#if 0
camel_html_parser_t state;
gchar *outp;
- priv = CAMEL_MIME_FILTER_HTML (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_HTML_GET_PRIVATE (mime_filter);
d(printf("converting html:\n%.*s\n", (gint)inlen, in));
}
static void
-mime_filter_html_finalize (CamelMimeFilterHTML *filter)
+mime_filter_html_dispose (GObject *object)
{
- camel_object_unref (filter->priv->ctxt);
- g_free (filter->priv);
+ CamelMimeFilterHTMLPrivate *priv;
+
+ priv = CAMEL_MIME_FILTER_HTML_GET_PRIVATE (object);
+
+ if (priv->ctxt != NULL) {
+ g_object_unref (priv->ctxt);
+ priv->ctxt = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_mime_filter_html_parent_class)->dispose (object);
}
static void
{
CamelMimeFilterHTMLPrivate *priv;
- priv = CAMEL_MIME_FILTER_HTML (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_HTML_GET_PRIVATE (mime_filter);
- camel_object_unref (priv->ctxt);
+ g_object_unref (priv->ctxt);
priv->ctxt = camel_html_parser_new ();
}
static void
camel_mime_filter_html_class_init (CamelMimeFilterHTMLClass *class)
{
+ GObjectClass *object_class;
CamelMimeFilterClass *mime_filter_class;
- camel_mime_filter_html_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterHTMLPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = mime_filter_html_dispose;
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_html_filter;
static void
camel_mime_filter_html_init (CamelMimeFilterHTML *mime_filter)
{
- mime_filter->priv = g_new0 (CamelMimeFilterHTMLPrivate, 1);
+ mime_filter->priv = CAMEL_MIME_FILTER_HTML_GET_PRIVATE (mime_filter);
mime_filter->priv->ctxt = camel_html_parser_new ();
}
-CamelType
-camel_mime_filter_html_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterHTML",
- sizeof (CamelMimeFilterHTML),
- sizeof (CamelMimeFilterHTMLClass),
- (CamelObjectClassInitFunc) camel_mime_filter_html_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_html_init,
- (CamelObjectFinalizeFunc) mime_filter_html_finalize);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_html_new:
*
CamelMimeFilter *
camel_mime_filter_html_new (void)
{
- return (CamelMimeFilter *) camel_object_new (camel_mime_filter_html_get_type ());
+ return g_object_new (CAMEL_TYPE_MIME_FILTER_HTML, NULL);
}
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_HTML(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_html_get_type (), CamelMimeFilterHTML)
-#define CAMEL_MIME_FILTER_HTML_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_html_get_type (), CamelMimeFilterHTMLClass)
-#define CAMEL_IS_MIME_FILTER_HTML(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_html_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_HTML \
+ (camel_mime_filter_html_get_type ())
+#define CAMEL_MIME_FILTER_HTML(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_HTML, CamelMimeFilterHTML))
+#define CAMEL_MIME_FILTER_HTML_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_HTML, CamelMimeFilterHTMLClass))
+#define CAMEL_IS_MIME_FILTER_HTML(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_HTML))
+#define CAMEL_IS_MIME_FILTER_HTML_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_HTML))
+#define CAMEL_MIME_FILTER_HTML_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_HTML, CamelMimeFilterHTMLClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_html_get_type (void);
+GType camel_mime_filter_html_get_type (void);
CamelMimeFilter *
camel_mime_filter_html_new (void);
#include "camel-mime-filter-index.h"
#include "camel-text-index.h"
+#define CAMEL_MIME_FILTER_INDEX_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_INDEX, CamelMimeFilterIndexPrivate))
+
struct _CamelMimeFilterIndexPrivate {
CamelIndex *index;
CamelIndexName *name;
};
-static CamelMimeFilterClass *camel_mime_filter_index_parent;
+G_DEFINE_TYPE (CamelMimeFilterIndex, camel_mime_filter_index, CAMEL_TYPE_MIME_FILTER)
static void
-mime_filter_index_finalize (CamelMimeFilterIndex *mime_filter)
+mime_filter_index_dispose (GObject *object)
{
- if (mime_filter->priv->name)
- camel_object_unref (mime_filter->priv->name);
- camel_object_unref (mime_filter->priv->index);
- g_free (mime_filter->priv);
+ CamelMimeFilterIndexPrivate *priv;
+
+ priv = CAMEL_MIME_FILTER_INDEX_GET_PRIVATE (object);
+
+ if (priv->name != NULL) {
+ g_object_unref (priv->name);
+ priv->name = NULL;
+ }
+
+ if (priv->index != NULL) {
+ g_object_unref (priv->index);
+ priv->index = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_mime_filter_index_parent_class)->dispose (object);
}
static void
{
CamelMimeFilterIndexPrivate *priv;
- priv = CAMEL_MIME_FILTER_INDEX (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_INDEX_GET_PRIVATE (mime_filter);
if (priv->index == NULL || priv->name==NULL) {
goto donothing;
{
CamelMimeFilterIndexPrivate *priv;
- priv = CAMEL_MIME_FILTER_INDEX (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_INDEX_GET_PRIVATE (mime_filter);
if (priv->index == NULL || priv->name==NULL) {
goto donothing;
static void
camel_mime_filter_index_class_init (CamelMimeFilterIndexClass *class)
{
+ GObjectClass *object_class;
CamelMimeFilterClass *mime_filter_class;
- camel_mime_filter_index_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterIndexPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = mime_filter_index_dispose;
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_index_filter;
}
static void
-camel_mime_filter_index_init (CamelMimeFilterIndex *mime_filter)
+camel_mime_filter_index_init (CamelMimeFilterIndex *filter)
{
- mime_filter->priv = g_new0 (CamelMimeFilterIndexPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_index_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterIndex",
- sizeof (CamelMimeFilterIndex),
- sizeof (CamelMimeFilterIndexClass),
- (CamelObjectClassInitFunc) camel_mime_filter_index_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_index_init,
- (CamelObjectFinalizeFunc) mime_filter_index_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_INDEX_GET_PRIVATE (filter);
}
/**
CamelMimeFilter *new;
CamelMimeFilterIndexPrivate *priv;
- new = CAMEL_MIME_FILTER (camel_object_new (camel_mime_filter_index_get_type ()));
+ new = g_object_new (CAMEL_TYPE_MIME_FILTER_INDEX, NULL);
if (new) {
- priv = CAMEL_MIME_FILTER_INDEX (new)->priv;
+ priv = CAMEL_MIME_FILTER_INDEX_GET_PRIVATE (new);
priv->index = index;
if (index)
- camel_object_ref (index);
+ g_object_ref (index);
}
return new;
}
if (name != NULL) {
g_return_if_fail (CAMEL_IS_INDEX_NAME (name));
- camel_object_ref (name);
+ g_object_ref (name);
}
if (filter->priv->name != NULL)
- camel_object_unref (filter->priv->name);
+ g_object_unref (filter->priv->name);
filter->priv->name = name;
}
if (index != NULL) {
g_return_if_fail (CAMEL_IS_INDEX (index));
- camel_object_ref (index);
+ g_object_ref (index);
}
if (filter->priv->index) {
camel_mime_filter_complete (
CAMEL_MIME_FILTER (filter),
"", 0, 0, &out, &outlen, &outspace);
- camel_object_unref (index);
+ g_object_unref (filter->priv->index);
}
filter->priv->index = index;
#include <camel/camel-index.h>
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_INDEX(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_index_get_type (), CamelMimeFilterIndex)
-#define CAMEL_MIME_FILTER_INDEX_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_index_get_type (), CamelMimeFilterIndexClass)
-#define CAMEL_IS_MIME_FILTER_INDEX(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_index_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_INDEX \
+ (camel_mime_filter_index_get_type ())
+#define CAMEL_MIME_FILTER_INDEX(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_INDEX, CamelMimeFilterIndex))
+#define CAMEL_MIME_FILTER_INDEX_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_INDEX, CamelMimeFilterIndexClass))
+#define CAMEL_IS_MIME_FILTER_INDEX(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_INDEX))
+#define CAMEL_IS_MIME_FILTER_INDEX_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_INDEX))
+#define CAMEL_MIME_FILTER_INDEX_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_INDEX, CamelMimeFilterIndexClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_index_get_type(void);
+GType camel_mime_filter_index_get_type (void);
CamelMimeFilter *
camel_mime_filter_index_new (CamelIndex *index);
#include "camel-mime-filter-linewrap.h"
+#define CAMEL_MIME_FILTER_LINEWRAP_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_LINEWRAP, CamelMimeFilterLinewrapPrivate))
+
struct _CamelMimeFilterLinewrapPrivate {
guint wrap_len;
guint max_len;
guint32 flags;
};
-static void
-mime_filter_linewrap_finalize (CamelMimeFilterLinewrap *mime_filter)
-{
- g_free (mime_filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterLinewrap, camel_mime_filter_linewrap, CAMEL_TYPE_MIME_FILTER)
static void
mime_filter_linewrap_filter (CamelMimeFilter *mime_filter,
const gchar *inend, *p;
gint nchars;
- priv = CAMEL_MIME_FILTER_LINEWRAP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_LINEWRAP_GET_PRIVATE (mime_filter);
nchars = priv->nchars;
{
CamelMimeFilterLinewrapPrivate *priv;
- priv = CAMEL_MIME_FILTER_LINEWRAP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_LINEWRAP_GET_PRIVATE (mime_filter);
priv->nchars = 0;
}
{
CamelMimeFilterClass *mime_filter_class;
+ g_type_class_add_private (class, sizeof (CamelMimeFilterLinewrapPrivate));
+
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_linewrap_filter;
mime_filter_class->complete = mime_filter_linewrap_complete;
}
static void
-camel_mime_filter_linewrap_init (CamelMimeFilterLinewrap *mime_filter)
+camel_mime_filter_linewrap_init (CamelMimeFilterLinewrap *filter)
{
- mime_filter->priv = g_new0 (CamelMimeFilterLinewrapPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_linewrap_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type(), "CamelMimeFilterLinewrap",
- sizeof (CamelMimeFilterLinewrap),
- sizeof (CamelMimeFilterLinewrapClass),
- (CamelObjectClassInitFunc) camel_mime_filter_linewrap_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_linewrap_init,
- (CamelObjectFinalizeFunc) mime_filter_linewrap_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_LINEWRAP_GET_PRIVATE (filter);
}
CamelMimeFilter *
CamelMimeFilter *filter;
CamelMimeFilterLinewrapPrivate *priv;
- filter = CAMEL_MIME_FILTER (camel_object_new (CAMEL_MIME_FILTER_LINEWRAP_TYPE));
- priv = CAMEL_MIME_FILTER_LINEWRAP (filter)->priv;
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_LINEWRAP, NULL);
+ priv = CAMEL_MIME_FILTER_LINEWRAP_GET_PRIVATE (filter);
priv->indent = indent_char;
priv->wrap_len = preferred_len;
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_LINEWRAP_TYPE (camel_mime_filter_linewrap_get_type ())
-#define CAMEL_MIME_FILTER_LINEWRAP(obj) CAMEL_CHECK_CAST (obj, CAMEL_MIME_FILTER_LINEWRAP_TYPE, CamelMimeFilterLinewrap)
-#define CAMEL_MIME_FILTER_LINEWRAP_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, CAMEL_MIME_FILTER_LINEWRAP_TYPE, CamelMimeFilterLinewrapClass)
-#define CAMEL_IS_MIME_FILTER_LINEWRAP(obj) CAMEL_CHECK_TYPE (obj, CAMEL_MIME_FILTER_LINEWRAP_TYPE)
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_LINEWRAP \
+ (camel_mime_filter_linewrap_get_type ())
+#define CAMEL_MIME_FILTER_LINEWRAP(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_LINEWRAP, CamelMimeFilterLinewrap))
+#define CAMEL_MIME_FILTER_LINEWRAP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_LINEWRAP, CamelMimeFilterLinewrapClass))
+#define CAMEL_IS_MIME_FILTER_LINEWRAP(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_LINEWRAP))
+#define CAMEL_IS_MIME_FILTER_LINEWRAP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_LINEWRAP))
+#define CAMEL_MIME_FILTER_LINEWRAP_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_LINEWRAP, CamelMimeFilterLinewrapClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_linewrap_get_type (void);
+GType camel_mime_filter_linewrap_get_type (void);
CamelMimeFilter *
camel_mime_filter_linewrap_new (guint preferred_len,
guint max_len,
#include "camel-mime-filter-pgp.h"
+#define CAMEL_MIME_FILTER_PGP_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PGP, CamelMimeFilterPgpPrivate))
+
#define BEGIN_PGP_SIGNED_MESSAGE "-----BEGIN PGP SIGNED MESSAGE-----"
#define BEGIN_PGP_SIGNATURE "-----BEGIN PGP SIGNATURE-----"
#define END_PGP_SIGNATURE "-----END PGP SIGNATURE-----"
PGP_FOOTER
};
+G_DEFINE_TYPE (CamelMimeFilterPgp, camel_mime_filter_pgp, CAMEL_TYPE_MIME_FILTER)
+
static void
mime_filter_pgp_run (CamelMimeFilter *mime_filter,
const gchar *in,
gboolean blank;
gsize len;
- priv = CAMEL_MIME_FILTER_PGP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_PGP_GET_PRIVATE (mime_filter);
/* only need as much space as the input, we're stripping chars */
camel_mime_filter_set_size (mime_filter, inlen, FALSE);
}
static void
-mime_filter_pgp_finalize (CamelMimeFilterPgp *mime_filter)
-{
- g_free (mime_filter->priv);
-}
-
-static void
mime_filter_pgp_filter (CamelMimeFilter *mime_filter,
const gchar *in,
gsize len,
{
CamelMimeFilterPgpPrivate *priv;
- priv = CAMEL_MIME_FILTER_PGP (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_PGP_GET_PRIVATE (mime_filter);
priv->state = PGP_PREFACE;
}
{
CamelMimeFilterClass *mime_filter_class;
+ g_type_class_add_private (class, sizeof (CamelMimeFilterPgpPrivate));
+
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_pgp_filter;
mime_filter_class->complete = mime_filter_pgp_complete;
}
static void
-camel_mime_filter_pgp_init (CamelMimeFilterPgp *mime_filter)
-{
- mime_filter->priv = g_new0 (CamelMimeFilterPgpPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_pgp_get_type (void)
+camel_mime_filter_pgp_init (CamelMimeFilterPgp *filter)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterPgp",
- sizeof (CamelMimeFilterPgp),
- sizeof (CamelMimeFilterPgpClass),
- (CamelObjectClassInitFunc) camel_mime_filter_pgp_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_pgp_init,
- (CamelObjectFinalizeFunc) mime_filter_pgp_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_PGP_GET_PRIVATE (filter);
}
CamelMimeFilter *
camel_mime_filter_pgp_new (void)
{
- return (CamelMimeFilter *) camel_object_new (camel_mime_filter_pgp_get_type ());
+ return g_object_new (CAMEL_TYPE_MIME_FILTER_PGP, NULL);
}
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_PGP_TYPE (camel_mime_filter_pgp_get_type ())
-#define CAMEL_MIME_FILTER_PGP(obj) CAMEL_CHECK_CAST (obj, CAMEL_MIME_FILTER_PGP_TYPE, CamelMimeFilterPgp)
-#define CAMEL_MIME_FILTER_PGP_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, CAMEL_MIME_FILTER_PGP_TYPE, CamelMimeFilterPgpClass)
-#define CAMEL_IS_MIME_FILTER_PGP(obj) CAMEL_CHECK_TYPE (obj, CAMEL_MIME_FILTER_PGP_TYPE)
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_PGP \
+ (camel_mime_filter_pgp_get_type ())
+#define CAMEL_MIME_FILTER_PGP(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PGP, CamelMimeFilterPgp))
+#define CAMEL_MIME_FILTER_PGP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_PGP, CamelMimeFilterPgpClass))
+#define CAMEL_IS_MIME_FILTER_PGP(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PGP))
+#define CAMEL_IS_MIME_FILTER_PGP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_PGP))
+#define CAMEL_MIME_FILTER_PGP_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PGP, CamelMimeFilterPgpClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_pgp_get_type (void);
+GType camel_mime_filter_pgp_get_type (void);
CamelMimeFilter *
camel_mime_filter_pgp_new (void);
#include "camel-mime-filter-progress.h"
+#define CAMEL_MIME_FILTER_PROGRESS_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PROGRESS, CamelMimeFilterProgressPrivate))
+
#define d(x)
#define w(x)
gsize count;
};
-static CamelMimeFilterClass *parent_class = NULL;
-
-static void
-mime_filter_progress_finalize (CamelMimeFilterProgress *mime_filter)
-{
- g_free (mime_filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterProgress, camel_mime_filter_progress, CAMEL_TYPE_MIME_FILTER)
static void
mime_filter_progress_filter (CamelMimeFilter *mime_filter,
CamelMimeFilterProgressPrivate *priv;
gdouble percent;
- priv = CAMEL_MIME_FILTER_PROGRESS (mime_filter)->priv;
-
+ priv = CAMEL_MIME_FILTER_PROGRESS_GET_PRIVATE (mime_filter);
priv->count += len;
if (priv->count < priv->total)
{
CamelMimeFilterProgressPrivate *priv;
- priv = CAMEL_MIME_FILTER_PROGRESS (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_PROGRESS_GET_PRIVATE (mime_filter);
priv->count = 0;
}
{
CamelMimeFilterClass *mime_filter_class;
- parent_class = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterProgressPrivate));
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_progress_filter;
}
static void
-camel_mime_filter_progress_init (CamelMimeFilterProgress *mime_filter)
+camel_mime_filter_progress_init (CamelMimeFilterProgress *filter)
{
- mime_filter->priv = g_new0 (CamelMimeFilterProgressPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_progress_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterProgress",
- sizeof (CamelMimeFilterProgress),
- sizeof (CamelMimeFilterProgressClass),
- (CamelObjectClassInitFunc) camel_mime_filter_progress_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_progress_init,
- (CamelObjectFinalizeFunc) mime_filter_progress_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_PROGRESS_GET_PRIVATE (filter);
}
/**
CamelMimeFilter *filter;
CamelMimeFilterProgressPrivate *priv;
- filter = (CamelMimeFilter *) camel_object_new (camel_mime_filter_progress_get_type ());
- priv = CAMEL_MIME_FILTER_PROGRESS (filter)->priv;
+ g_return_val_if_fail (operation != NULL, NULL);
+
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_PROGRESS, NULL);
+ priv = CAMEL_MIME_FILTER_PROGRESS_GET_PRIVATE (filter);
priv->operation = operation;
priv->total = total;
#include <camel/camel-operation.h>
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_PROGRESS(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_progress_get_type (), CamelMimeFilterProgress)
-#define CAMEL_MIME_FILTER_PROGRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_progress_get_type (), CamelMimeFilterProgressClass)
-#define CAMEL_IS_MIME_FILTER_PROGRESS(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_progress_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_PROGRESS \
+ (camel_mime_filter_progress_get_type ())
+#define CAMEL_MIME_FILTER_PROGRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PROGRESS, CamelMimeFilterProgress))
+#define CAMEL_MIME_FILTER_PROGRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_PROGRESS, CamelMimeFilterProgressClass))
+#define CAMEL_IS_MIME_FILTER_PROGRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PROGRESS))
+#define CAMEL_IS_MIME_FILTER_PROGRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_PROGRESS))
+#define CAMEL_MIME_FILTER_PROGRESS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_PROGRESS, CamelMimeFilterProgressClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_progress_get_type (void);
+GType camel_mime_filter_progress_get_type (void);
CamelMimeFilter *
camel_mime_filter_progress_new (CamelOperation *operation,
gsize total);
#include "camel-mime-filter-save.h"
#include "camel-stream-mem.h"
+#define CAMEL_MIME_FILTER_SAVE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_SAVE, CamelMimeFilterSavePrivate))
+
struct _CamelMimeFilterSavePrivate {
CamelStream *stream;
};
-static void
-mime_filter_save_finalize (CamelMimeFilterSave *mime_filter)
-{
- g_free (mime_filter->priv);
-}
+G_DEFINE_TYPE (CamelMimeFilterSave, camel_mime_filter_save, CAMEL_TYPE_MIME_FILTER)
static void
mime_filter_save_filter (CamelMimeFilter *mime_filter,
{
CamelMimeFilterSavePrivate *priv;
- priv = CAMEL_MIME_FILTER_SAVE (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_SAVE_GET_PRIVATE (mime_filter);
if (priv->stream != NULL)
camel_stream_write (priv->stream, in, len);
{
CamelMimeFilterClass *mime_filter_class;
+ g_type_class_add_private (class, sizeof (CamelMimeFilterSavePrivate));
+
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_save_filter;
mime_filter_class->complete = mime_filter_save_complete;
}
static void
-camel_mime_filter_save_init (CamelMimeFilterSave *mime_filter)
-{
- mime_filter->priv = g_new0 (CamelMimeFilterSavePrivate, 1);
-}
-
-CamelType
-camel_mime_filter_save_get_type (void)
+camel_mime_filter_save_init (CamelMimeFilterSave *filter)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type(), "CamelMimeFilterSave",
- sizeof (CamelMimeFilterSave),
- sizeof (CamelMimeFilterSaveClass),
- (CamelObjectClassInitFunc) camel_mime_filter_save_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_save_init,
- (CamelObjectFinalizeFunc) mime_filter_save_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_SAVE_GET_PRIVATE (filter);
}
/**
if (stream != NULL)
g_return_val_if_fail (CAMEL_IS_STREAM (stream), NULL);
- filter = CAMEL_MIME_FILTER (camel_object_new (CAMEL_MIME_FILTER_SAVE_TYPE));
- priv = CAMEL_MIME_FILTER_SAVE (filter)->priv;
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_SAVE, NULL);
+ priv = CAMEL_MIME_FILTER_SAVE_GET_PRIVATE (filter);
- priv->stream = stream;
if (stream != NULL)
- camel_object_ref (stream);
+ priv->stream = g_object_ref (stream);
+ else
+ priv->stream = camel_stream_mem_new ();
return filter;
}
#include <camel/camel-mime-filter.h>
#include <camel/camel-seekable-stream.h>
-#define CAMEL_MIME_FILTER_SAVE_TYPE (camel_mime_filter_save_get_type ())
-#define CAMEL_MIME_FILTER_SAVE(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_save_get_type (), CamelMimeFilterSave)
-#define CAMEL_MIME_FILTER_SAVE_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_save_get_type (), CamelMimeFilterSaveClass)
-#define CAMEL_IS_MIME_FILTER_SAVE(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_save_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_SAVE \
+ (camel_mime_filter_save_get_type ())
+#define CAMEL_MIME_FILTER_SAVE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_SAVE, CamelMimeFilterSave))
+#define CAMEL_MIME_FILTER_SAVE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_SAVE, CamelMimeFilterSaveClass))
+#define CAMEL_IS_MIME_FILTER_SAVE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_SAVE))
+#define CAMEL_IS_MIME_FILTER_SAVE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_SAVE))
+#define CAMEL_MIME_FILTER_SAVE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_SAVE, CamelMimeFilterSaveClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_save_get_type (void);
+GType camel_mime_filter_save_get_type (void);
CamelMimeFilter *
camel_mime_filter_save_new (CamelStream *stream);
#include "camel-url-scanner.h"
#include "camel-utf8.h"
+#define CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_TOHTML, CamelMimeFilterToHTMLPrivate))
+
struct _CamelMimeFilterToHTMLPrivate {
CamelUrlScanner *scanner;
{ CONVERT_ADDRSPEC, { "@", "mailto:", camel_url_addrspec_start, camel_url_addrspec_end } },
};
-static CamelMimeFilterClass *camel_mime_filter_tohtml_parent;
+G_DEFINE_TYPE (CamelMimeFilterToHTML, camel_mime_filter_tohtml, CAMEL_TYPE_MIME_FILTER)
static gchar *
check_size (CamelMimeFilter *mime_filter,
CamelMimeFilterToHTMLPrivate *priv;
const guchar *inptr = in;
- priv = CAMEL_MIME_FILTER_TOHTML (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE (mime_filter);
while (inptr < inend) {
guint32 u;
const gchar *inend;
gint depth;
- priv = CAMEL_MIME_FILTER_TOHTML (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE (mime_filter);
if (inlen == 0) {
if (priv->pre_open) {
}
static void
-camel_mime_filter_tohtml_finalize (CamelMimeFilterToHTML *mime_filter)
+mime_filter_tohtml_finalize (GObject *object)
{
- camel_url_scanner_free (mime_filter->priv->scanner);
+ CamelMimeFilterToHTMLPrivate *priv;
+
+ priv = CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE (object);
- g_free (mime_filter->priv);
+ camel_url_scanner_free (priv->scanner);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_filter_tohtml_parent_class)->finalize (object);
}
static void
{
CamelMimeFilterToHTMLPrivate *priv;
- priv = CAMEL_MIME_FILTER_TOHTML (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE (mime_filter);
priv->column = 0;
priv->pre_open = FALSE;
static void
camel_mime_filter_tohtml_class_init (CamelMimeFilterToHTMLClass *class)
{
- CamelMimeFilterClass *mime_filter_class;
+ GObjectClass *object_class;
+ CamelMimeFilterClass *filter_class;
+
+ g_type_class_add_private (class, sizeof (CamelMimeFilterToHTMLPrivate));
- camel_mime_filter_tohtml_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = mime_filter_tohtml_finalize;
- mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
- mime_filter_class->filter = mime_filter_tohtml_filter;
- mime_filter_class->complete = mime_filter_tohtml_complete;
- mime_filter_class->reset = mime_filter_tohtml_reset;
+ filter_class = CAMEL_MIME_FILTER_CLASS (class);
+ filter_class->filter = mime_filter_tohtml_filter;
+ filter_class->complete = mime_filter_tohtml_complete;
+ filter_class->reset = mime_filter_tohtml_reset;
}
static void
camel_mime_filter_tohtml_init (CamelMimeFilterToHTML *filter)
{
- filter->priv = g_new0 (CamelMimeFilterToHTMLPrivate, 1);
+ filter->priv = CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE (filter);
filter->priv->scanner = camel_url_scanner_new ();
}
-CamelType
-camel_mime_filter_tohtml_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterToHTML",
- sizeof (CamelMimeFilterToHTML),
- sizeof (CamelMimeFilterToHTMLClass),
- (CamelObjectClassInitFunc) camel_mime_filter_tohtml_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_tohtml_init,
- (CamelObjectFinalizeFunc) camel_mime_filter_tohtml_finalize);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_tohtml_new:
* @flags: bitwise flags defining the behaviour
CamelMimeFilterToHTMLPrivate *priv;
gint i;
- filter = CAMEL_MIME_FILTER (camel_object_new (camel_mime_filter_tohtml_get_type ()));
- priv = CAMEL_MIME_FILTER_TOHTML (filter)->priv;
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_TOHTML, NULL);
+ priv = CAMEL_MIME_FILTER_TOHTML_GET_PRIVATE (filter);
priv->flags = flags;
priv->color = color;
outbuf = g_strndup (outbuf, outlen);
- camel_object_unref (filter);
+ g_object_unref (filter);
return outbuf;
}
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_TOHTML(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_tohtml_get_type (), CamelMimeFilterToHTML)
-#define CAMEL_MIME_FILTER_TOHTML_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_tohtml_get_type (), CamelMimeFilterToHTMLClass)
-#define CAMEL_IS_MIME_FILTER_TOHTML(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_tohtml_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_TOHTML \
+ (camel_mime_filter_tohtml_get_type ())
+#define CAMEL_MIME_FILTER_TOHTML(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_TOHTML, CamelMimeFilterToHTML))
+#define CAMEL_MIME_FILTER_TOHTML_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_TOHTML, CamelMimeFilterToHTMLClass))
+#define CAMEL_IS_MIME_FILTER_TOHTML(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_TOHTML))
+#define CAMEL_IS_MIME_FILTER_TOHTML_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_TOHTML))
+#define CAMEL_MIME_FILTER_TOHTML_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_TOHTML, CamelMimeFilterToHTMLClass))
#define CAMEL_MIME_FILTER_TOHTML_PRE (1 << 0)
#define CAMEL_MIME_FILTER_TOHTML_CONVERT_NL (1 << 1)
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_tohtml_get_type (void);
+GType camel_mime_filter_tohtml_get_type (void);
CamelMimeFilter *
camel_mime_filter_tohtml_new (guint32 flags,
guint32 color);
#include "camel-charset-map.h"
#include "camel-mime-filter-windows.h"
+#define CAMEL_MIME_FILTER_WINDOWS_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_WINDOWS, CamelMimeFilterWindowsPrivate))
+
#define d(x)
#define w(x)
-static CamelMimeFilterClass *parent_class = NULL;
-
struct _CamelMimeFilterWindowsPrivate {
gboolean is_windows;
gchar *claimed_charset;
};
+G_DEFINE_TYPE (CamelMimeFilterWindows, camel_mime_filter_windows, CAMEL_TYPE_MIME_FILTER)
+
static void
-mime_filter_windows_finalize (CamelMimeFilterWindows *mime_filter)
+mime_filter_windows_finalize (GObject *object)
{
- g_free (mime_filter->priv->claimed_charset);
- g_free (mime_filter->priv);
+ CamelMimeFilterWindowsPrivate *priv;
+
+ priv = CAMEL_MIME_FILTER_WINDOWS_GET_PRIVATE (object);
+
+ g_free (priv->claimed_charset);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_filter_windows_parent_class)->finalize (object);
}
static void
register guchar *inptr;
guchar *inend;
- priv = CAMEL_MIME_FILTER_WINDOWS (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_WINDOWS_GET_PRIVATE (mime_filter);
if (!priv->is_windows) {
inptr = (guchar *) in;
{
CamelMimeFilterWindowsPrivate *priv;
- priv = CAMEL_MIME_FILTER_WINDOWS (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_WINDOWS_GET_PRIVATE (mime_filter);
priv->is_windows = FALSE;
}
static void
camel_mime_filter_windows_class_init (CamelMimeFilterWindowsClass *class)
{
+ GObjectClass *object_class;
CamelMimeFilterClass *mime_filter_class;
- parent_class = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterWindowsPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = mime_filter_windows_finalize;
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_windows_filter;
}
static void
-camel_mime_filter_windows_init (CamelMimeFilterWindows *mime_filter)
-{
- mime_filter->priv = g_new0 (CamelMimeFilterWindowsPrivate, 1);
-}
-
-CamelType
-camel_mime_filter_windows_get_type (void)
+camel_mime_filter_windows_init (CamelMimeFilterWindows *filter)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterWindows",
- sizeof (CamelMimeFilterWindows),
- sizeof (CamelMimeFilterWindowsClass),
- (CamelObjectClassInitFunc) camel_mime_filter_windows_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_windows_init,
- (CamelObjectFinalizeFunc) mime_filter_windows_finalize);
- }
-
- return type;
+ filter->priv = CAMEL_MIME_FILTER_WINDOWS_GET_PRIVATE (filter);
}
/**
g_return_val_if_fail (claimed_charset != NULL, NULL);
- filter = CAMEL_MIME_FILTER (camel_object_new (camel_mime_filter_windows_get_type ()));
- priv = CAMEL_MIME_FILTER_WINDOWS (filter)->priv;
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_WINDOWS, NULL);
+ priv = CAMEL_MIME_FILTER_WINDOWS_GET_PRIVATE (filter);
priv->claimed_charset = g_strdup (claimed_charset);
#include <camel/camel-mime-filter.h>
-#define CAMEL_MIME_FILTER_WINDOWS(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_windows_get_type (), CamelMimeFilterWindows)
-#define CAMEL_MIME_FILTER_WINDOWS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_windows_get_type (), CamelMimeFilterWindowsClass)
-#define CAMEL_IS_MIME_FILTER_WINDOWS(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_windows_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_WINDOWS \
+ (camel_mime_filter_windows_get_type ())
+#define CAMEL_MIME_FILTER_WINDOWS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_WINDOWS, CamelMimeFilterWindows))
+#define CAMEL_MIME_FILTER_WINDOWS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_WINDOWS, CamelMimeFilterWindowsClass))
+#define CAMEL_IS_MIME_FILTER_WINDOWS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_WINDOWS))
+#define CAMEL_IS_MIME_FILTER_WINDOWS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_WINDOWS))
+#define CAMEL_MIME_FILTER_WINDOWS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_WINDOWS, CamelMimeFilterWindowsClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_windows_get_type (void);
+GType camel_mime_filter_windows_get_type (void);
CamelMimeFilter *
camel_mime_filter_windows_new
(const gchar *claimed_charset);
#include "camel-mime-filter-yenc.h"
+#define CAMEL_MIME_FILTER_YENC_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYencPrivate))
+
struct _CamelMimeFilterYencPrivate {
CamelMimeFilterYencDirection direction;
guint32 crc;
};
-static CamelMimeFilterClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelMimeFilterYenc, camel_mime_filter_yenc, CAMEL_TYPE_MIME_FILTER)
/* here we do all of the basic yEnc filtering */
static void
CamelMimeFilterYencPrivate *priv;
gsize newlen = 0;
- priv = CAMEL_MIME_FILTER_YENC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_YENC_GET_PRIVATE (mime_filter);
switch (priv->direction) {
case CAMEL_MIME_FILTER_YENC_DIRECTION_ENCODE:
CamelMimeFilterYencPrivate *priv;
gsize newlen = 0;
- priv = CAMEL_MIME_FILTER_YENC (mime_filter)->priv;
+ priv = CAMEL_MIME_FILTER_YENC_GET_PRIVATE (mime_filter);
switch (priv->direction) {
case CAMEL_MIME_FILTER_YENC_DIRECTION_ENCODE:
/* should this 'flush' outstanding state/data bytes? */
static void
-mime_filter_yenc_reset (CamelMimeFilter *filter)
+mime_filter_yenc_reset (CamelMimeFilter *mime_filter)
{
CamelMimeFilterYencPrivate *priv;
- priv = CAMEL_MIME_FILTER_YENC (filter)->priv;
+ priv = CAMEL_MIME_FILTER_YENC_GET_PRIVATE (mime_filter);
switch (priv->direction) {
case CAMEL_MIME_FILTER_YENC_DIRECTION_ENCODE:
{
CamelMimeFilterClass *mime_filter_class;
- parent_class = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimeFilterYencPrivate));
mime_filter_class = CAMEL_MIME_FILTER_CLASS (class);
mime_filter_class->filter = mime_filter_yenc_filter;
static void
camel_mime_filter_yenc_init (CamelMimeFilterYenc *filter)
{
- filter->priv = g_new0 (CamelMimeFilterYencPrivate, 1);
+ filter->priv = CAMEL_MIME_FILTER_YENC_GET_PRIVATE (filter);
+
filter->priv->part = 0;
filter->priv->pcrc = CAMEL_MIME_YENCODE_CRC_INIT;
filter->priv->crc = CAMEL_MIME_YENCODE_CRC_INIT;
}
-CamelType
-camel_mime_filter_yenc_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (),
- "CamelMimeFilterYenc",
- sizeof (CamelMimeFilterYenc),
- sizeof (CamelMimeFilterYencClass),
- (CamelObjectClassInitFunc) camel_mime_filter_yenc_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_yenc_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_mime_filter_yenc_new:
* @direction: encode direction
CamelMimeFilter *filter;
CamelMimeFilterYencPrivate *priv;
- filter = (CamelMimeFilter *) camel_object_new (CAMEL_TYPE_MIME_FILTER_YENC);
- priv = CAMEL_MIME_FILTER_YENC (filter)->priv;
+ filter = g_object_new (CAMEL_TYPE_MIME_FILTER_YENC, NULL);
+ priv = CAMEL_MIME_FILTER_YENC_GET_PRIVATE (filter);
priv->direction = direction;
#include <camel/camel-mime-filter.h>
-#define CAMEL_TYPE_MIME_FILTER_YENC (camel_mime_filter_yenc_get_type ())
-#define CAMEL_MIME_FILTER_YENC(obj) (CAMEL_CHECK_CAST ((obj), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYenc))
-#define CAMEL_MIME_FILTER_YENC_CLASS(klass) (CAMEL_CHECK_CLASS_CAST ((klass), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYencClass))
-#define CAMEL_IS_MIME_FILTER_YENC(obj) (CAMEL_CHECK_TYPE ((obj), CAMEL_TYPE_MIME_FILTER_YENC))
-#define CAMEL_IS_MIME_FILTER_YENC_CLASS(klass) (CAMEL_CHECK_CLASS_TYPE ((klass), CAMEL_TYPE_MIME_FILTER_YENC))
-#define CAMEL_MIME_FILTER_YENC_GET_CLASS(obj) (CAMEL_CHECK_GET_CLASS ((obj), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYencClass))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER_YENC \
+ (camel_mime_filter_yenc_get_type ())
+#define CAMEL_MIME_FILTER_YENC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYenc))
+#define CAMEL_MIME_FILTER_YENC_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYencClass))
+#define CAMEL_IS_MIME_FILTER_YENC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER_YENC))
+#define CAMEL_IS_MIME_FILTER_YENC_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER_YENC))
+#define CAMEL_MIME_FILTER_YENC_GET_CLASS(obj) \
+ (CAMEL_CHECK_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER_YENC, CamelMimeFilterYencClass))
G_BEGIN_DECLS
CamelMimeFilterClass parent_class;
};
-CamelType camel_mime_filter_yenc_get_type (void);
+GType camel_mime_filter_yenc_get_type (void);
CamelMimeFilter *
camel_mime_filter_yenc_new (CamelMimeFilterYencDirection direction);
void camel_mime_filter_yenc_set_state(CamelMimeFilterYenc *yenc,
#include <mcheck.h>
#endif
+#define CAMEL_MIME_FILTER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_FILTER, CamelMimeFilterPrivate))
+
struct _CamelMimeFilterPrivate {
gchar *inbuf;
gsize inlen;
#define PRE_HEAD (64)
#define BACK_HEAD (64)
-static CamelObjectClass *camel_mime_filter_parent;
+G_DEFINE_ABSTRACT_TYPE (CamelMimeFilter, camel_mime_filter, CAMEL_TYPE_OBJECT)
static void
-mime_filter_finalize (CamelObject *object)
+mime_filter_finalize (GObject *object)
{
CamelMimeFilter *mime_filter;
g_free (mime_filter->outreal);
g_free (mime_filter->backbuf);
g_free (mime_filter->priv->inbuf);
- g_free (mime_filter->priv);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_filter_parent_class)->finalize (object);
}
static void
static void
camel_mime_filter_class_init (CamelMimeFilterClass *class)
{
- camel_mime_filter_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelMimeFilterPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = mime_filter_finalize;
class->complete = mime_filter_complete;
}
static void
camel_mime_filter_init (CamelMimeFilter *mime_filter)
{
- mime_filter->priv = g_malloc0(sizeof(*mime_filter->priv));
+ mime_filter->priv = CAMEL_MIME_FILTER_GET_PRIVATE (mime_filter);
mime_filter->outreal = NULL;
mime_filter->outbuf = NULL;
mime_filter->backlen = 0;
}
-CamelType
-camel_mime_filter_get_type (void)
-{
- static CamelType camel_mime_filter_type = CAMEL_INVALID_TYPE;
-
- if (camel_mime_filter_type == CAMEL_INVALID_TYPE) {
- camel_mime_filter_type = camel_type_register (CAMEL_TYPE_OBJECT, "CamelMimeFilter",
- sizeof (CamelMimeFilter),
- sizeof (CamelMimeFilterClass),
- (CamelObjectClassInitFunc) camel_mime_filter_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_init,
- (CamelObjectFinalizeFunc) mime_filter_finalize);
- }
-
- return camel_mime_filter_type;
-}
-
/**
* camel_mime_filter_new:
*
CamelMimeFilter *
camel_mime_filter_new (void)
{
- return CAMEL_MIME_FILTER ( camel_object_new (camel_mime_filter_get_type ()));
+ return g_object_new (CAMEL_TYPE_MIME_FILTER, NULL);
}
#ifdef MALLOC_CHECK
*/
if (prespace < f->backlen) {
gint newlen = len+prespace+f->backlen;
- p = f->priv;
+ p = CAMEL_MIME_FILTER_GET_PRIVATE(f);
if (p->inlen < newlen) {
/* NOTE: g_realloc copies data, we dont need that (slower) */
g_free(p->inbuf);
#include <sys/types.h>
#include <camel/camel-object.h>
-#define CAMEL_MIME_FILTER_TYPE (camel_mime_filter_get_type ())
-#define CAMEL_MIME_FILTER(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_get_type (), CamelMimeFilter)
-#define CAMEL_MIME_FILTER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_get_type (), CamelMimeFilterClass)
-#define CAMEL_IS_MIME_FILTER(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_FILTER \
+ (camel_mime_filter_get_type ())
+#define CAMEL_MIME_FILTER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_FILTER, CamelMimeFilter))
+#define CAMEL_MIME_FILTER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_FILTER, CamelMimeFilterClass))
+#define CAMEL_IS_MIME_FILTER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_FILTER))
+#define CAMEL_IS_MIME_FILTER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_FILTER))
#define CAMEL_MIME_FILTER_GET_CLASS(obj) \
- ((CamelMimeFilterClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_FILTER, CamelMimeFilterClass))
G_BEGIN_DECLS
void (*reset) (CamelMimeFilter *filter);
};
-CamelType camel_mime_filter_get_type (void);
+GType camel_mime_filter_get_type (void);
CamelMimeFilter *
camel_mime_filter_new (void);
void camel_mime_filter_filter (CamelMimeFilter *filter,
"Bcc", "Resent-Bcc", "Date", "Message-ID", NULL
};
-static gpointer camel_mime_message_parent_class = NULL;
-
static const gchar *recipient_names[] = {
"To", "Cc", "Bcc", "Resent-To", "Resent-Cc", "Resent-Bcc", NULL
};
static GHashTable *header_name_table;
+G_DEFINE_TYPE (CamelMimeMessage, camel_mime_message, CAMEL_TYPE_MIME_PART)
+
/* FIXME: check format of fields. */
static gboolean
process_header (CamelMedium *medium,
addr = camel_internet_address_new();
unfolded = camel_header_unfold (value);
if (camel_address_decode ((CamelAddress *) addr, unfolded) <= 0) {
- camel_object_unref (addr);
+ g_object_unref (addr);
} else {
if (message->from)
- camel_object_unref (message->from);
+ g_object_unref (message->from);
message->from = addr;
}
g_free (unfolded);
addr = camel_internet_address_new();
unfolded = camel_header_unfold (value);
if (camel_address_decode ((CamelAddress *) addr, unfolded) <= 0) {
- camel_object_unref (addr);
+ g_object_unref (addr);
} else {
if (message->reply_to)
- camel_object_unref (message->reply_to);
+ g_object_unref (message->reply_to);
message->reply_to = addr;
}
g_free (unfolded);
static void
unref_recipient (gpointer key, gpointer value, gpointer user_data)
{
- camel_object_unref (value);
+ g_object_unref (value);
}
static void
-mime_message_finalize (CamelObject *object)
+mime_message_dispose (GObject *object)
{
CamelMimeMessage *message = CAMEL_MIME_MESSAGE (object);
- g_free (message->subject);
+ if (message->reply_to != NULL) {
+ g_object_unref (message->reply_to);
+ message->reply_to = NULL;
+ }
- g_free (message->message_id);
+ if (message->from != NULL) {
+ g_object_unref (message->from);
+ message->from = NULL;
+ }
- if (message->reply_to)
- camel_object_unref (message->reply_to);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_mime_message_parent_class)->dispose (object);
+}
- if (message->from)
- camel_object_unref (message->from);
+static void
+mime_message_finalize (GObject *object)
+{
+ CamelMimeMessage *message = CAMEL_MIME_MESSAGE (object);
+
+ g_free (message->subject);
+
+ g_free (message->message_id);
g_hash_table_foreach (message->recipients, unref_recipient, NULL);
g_hash_table_destroy (message->recipients);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_message_parent_class)->finalize (object);
}
static gssize
static void
camel_mime_message_class_init (CamelMimeMessageClass *class)
{
+ GObjectClass *object_class;
CamelDataWrapperClass *data_wrapper_class;
CamelMimePartClass *mime_part_class;
CamelMediumClass *medium_class;
gint ii;
- camel_mime_message_parent_class = CAMEL_MIME_PART_CLASS (camel_type_get_global_classfuncs (camel_mime_part_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = mime_message_dispose;
+ object_class->finalize = mime_message_finalize;
data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (class);
data_wrapper_class->write_to_stream = mime_message_write_to_stream;
mime_message->message_id = NULL;
}
-CamelType
-camel_mime_message_get_type (void)
-{
- static CamelType camel_mime_message_type = CAMEL_INVALID_TYPE;
-
- if (camel_mime_message_type == CAMEL_INVALID_TYPE) {
- camel_mime_message_type = camel_type_register (camel_mime_part_get_type(), "CamelMimeMessage",
- sizeof (CamelMimeMessage),
- sizeof (CamelMimeMessageClass),
- (CamelObjectClassInitFunc) camel_mime_message_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_message_init,
- (CamelObjectFinalizeFunc) mime_message_finalize);
- }
-
- return camel_mime_message_type;
-}
-
/**
* camel_mime_message_new:
*
CamelMimeMessage *
camel_mime_message_new (void)
{
- CamelMimeMessage *mime_message;
- mime_message = CAMEL_MIME_MESSAGE (camel_object_new (CAMEL_MIME_MESSAGE_TYPE));
-
- return mime_message;
+ return g_object_new (CAMEL_TYPE_MIME_MESSAGE, NULL);
}
/* **** Date: */
g_assert(msg);
if (msg->reply_to) {
- camel_object_unref (msg->reply_to);
+ g_object_unref (msg->reply_to);
msg->reply_to = NULL;
}
g_assert(msg);
if (msg->from) {
- camel_object_unref (msg->from);
+ g_object_unref (msg->from);
msg->from = NULL;
}
CAMEL_STREAM_FILTER (filter), bestenc);
d(printf("writing to checking stream\n"));
camel_data_wrapper_decode_to_stream (content, filter);
- camel_stream_filter_remove (
- CAMEL_STREAM_FILTER (filter), idb);
+ camel_stream_filter_remove (CAMEL_STREAM_FILTER (filter), idb);
if (idc != -1) {
camel_stream_filter_remove (CAMEL_STREAM_FILTER (filter), idc);
- camel_object_unref (charenc);
+ g_object_unref (charenc);
charenc = NULL;
}
/* and write it to the new stream */
camel_data_wrapper_write_to_stream (content, filter);
- camel_object_unref (charenc);
+ g_object_unref (charenc);
}
}
encoding = camel_mime_filter_bestenc_get_best_encoding (
CAMEL_MIME_FILTER_BESTENC (bestenc), enctype);
- camel_object_unref (filter);
- camel_object_unref (bestenc);
- camel_object_unref (null);
+ g_object_unref (filter);
+ g_object_unref (bestenc);
+ g_object_unref (null);
d(printf("done, best encoding = %d\n", encoding));
found = content_id && !strcmp (content_id, check->content_id) ? TRUE : FALSE;
if (found)
- check->part = camel_object_ref (part);
+ check->part = g_object_ref (part);
return !found;
}
memset(s, ' ', depth);
s[depth] = 0;
/* yes this leaks, so what its only debug stuff */
- printf("%sclass: %s\n", s, ((CamelObject *)part)->klass->name);
+ printf("%sclass: %s\n", s, G_OBJECT_TYPE_NAME (part));
printf("%smime-type: %s\n", s, camel_content_type_format(((CamelDataWrapper *)part)->mime_type));
containee = camel_medium_get_content ((CamelMedium *)part);
if (containee == NULL)
return;
- printf("%scontent class: %s\n", s, ((CamelObject *)containee)->klass->name);
+ printf("%scontent class: %s\n", s, G_OBJECT_TYPE_NAME (containee));
printf("%scontent mime-type: %s\n", s, camel_content_type_format(((CamelDataWrapper *)containee)->mime_type));
/* using the object types is more accurate than using the mime/types */
#include <camel/camel-internet-address.h>
#include <camel/camel-mime-filter-bestenc.h>
-#define CAMEL_MIME_MESSAGE_TYPE (camel_mime_message_get_type ())
-#define CAMEL_MIME_MESSAGE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MIME_MESSAGE_TYPE, CamelMimeMessage))
-#define CAMEL_MIME_MESSAGE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MIME_MESSAGE_TYPE, CamelMimeMessageClass))
-#define CAMEL_IS_MIME_MESSAGE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MIME_MESSAGE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_MESSAGE \
+ (camel_mime_message_get_type ())
+#define CAMEL_MIME_MESSAGE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_MESSAGE, CamelMimeMessage))
+#define CAMEL_MIME_MESSAGE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_MESSAGE, CamelMimeMessageClass))
+#define CAMEL_IS_MIME_MESSAGE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_MESSAGE))
+#define CAMEL_IS_MIME_MESSAGE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_MESSAGE))
+#define CAMEL_MIME_MESSAGE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_MESSAGE, CamelMimeMessageClass))
#define CAMEL_RECIPIENT_TYPE_TO "To"
#define CAMEL_RECIPIENT_TYPE_CC "Cc"
CamelMimePartClass parent_class;
};
-/* Standard Camel function */
-CamelType camel_mime_message_get_type (void);
+GType camel_mime_message_get_type (void);
/* public methods */
CamelMimeMessage *camel_mime_message_new (void);
};
#endif
-static CamelObjectClass *camel_mime_parser_parent;
+G_DEFINE_TYPE (CamelMimeParser, camel_mime_parser, CAMEL_TYPE_OBJECT)
static void
-mime_parser_finalize (CamelObject *object)
+mime_parser_finalize (GObject *object)
{
- struct _header_scan_state *s = _PRIVATE(object);
+ struct _header_scan_state *s = _PRIVATE (object);
+
#ifdef PURIFY
purify_watch_remove_all();
#endif
folder_scan_close(s);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_parser_parent_class)->finalize (object);
}
static void
camel_mime_parser_class_init (CamelMimeParserClass *class)
{
- camel_mime_parser_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = mime_parser_finalize;
}
static void
camel_mime_parser_init (CamelMimeParser *parser)
{
- struct _header_scan_state *s;
-
- s = folder_scan_init();
- _PRIVATE(parser) = s;
-}
-
-CamelType
-camel_mime_parser_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelMimeParser",
- sizeof (CamelMimeParser),
- sizeof (CamelMimeParserClass),
- (CamelObjectClassInitFunc) camel_mime_parser_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_parser_init,
- (CamelObjectFinalizeFunc) mime_parser_finalize);
- }
-
- return type;
+ parser->priv = folder_scan_init();
}
/**
CamelMimeParser *
camel_mime_parser_new (void)
{
- return CAMEL_MIME_PARSER (camel_object_new (camel_mime_parser_get_type ()));
+ return g_object_new (CAMEL_TYPE_MIME_PARSER, NULL);
}
/**
struct _header_scan_filter *f, *new;
new = g_malloc(sizeof(*new));
- new->filter = camel_object_ref (mf);
+ new->filter = mf;
new->id = s->filterid++;
if (s->filterid == -1)
s->filterid++;
while (f && f->next) {
old = f->next;
if (old->id == id) {
- camel_object_unref (old->filter);
+ g_object_unref (old->filter);
f->next = old->next;
g_free(old);
/* there should only be a single matching id, but
if (s->fd != -1)
close(s->fd);
if (s->stream) {
- camel_object_unref (s->stream);
+ g_object_unref (s->stream);
}
g_free(s);
}
s->fd = -1;
}
if (s->stream) {
- camel_object_unref (s->stream);
+ g_object_unref (s->stream);
s->stream = NULL;
}
s->ioerrno = 0;
CamelStream *stream)
{
folder_scan_reset(s);
- s->stream = camel_object_ref (stream);
+ s->stream = g_object_ref (stream);
return 0;
}
#include <camel/camel-mime-filter.h>
#include <camel/camel-stream.h>
-#define CAMEL_MIME_PARSER(obj) CAMEL_CHECK_CAST (obj, camel_mime_parser_get_type (), CamelMimeParser)
-#define CAMEL_MIME_PARSER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_parser_get_type (), CamelMimeParserClass)
-#define CAMEL_IS_MIME_PARSER(obj) CAMEL_CHECK_TYPE (obj, camel_mime_parser_get_type ())
+/* Stardard GObject macros */
+#define CAMEL_TYPE_MIME_PARSER \
+ (camel_mime_parser_get_type ())
+#define CAMEL_MIME_PARSER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_PARSER, CamelMimeParser))
+#define CAMEL_MIME_PARSER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_PARSER, CamelMimeParserClass))
+#define CAMEL_IS_MIME_PARSER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_PARSER))
+#define CAMEL_IS_MIME_PARSER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_PARSER))
+#define CAMEL_MIME_PARSER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_PARSER, CamelMimeParserClass))
G_BEGIN_DECLS
void (*content) (CamelMimeParser *parser);
};
-CamelType camel_mime_parser_get_type (void);
+GType camel_mime_parser_get_type (void);
CamelMimeParser *camel_mime_parser_new (void);
/* quick-fix for parser not erroring, we can find out if it had an error afterwards */
mem = camel_stream_mem_new_with_byte_array (buffer);
camel_data_wrapper_construct_from_stream (dw, mem);
- camel_object_unref (mem);
+ g_object_unref (mem);
}
/**
/* would you believe you have to set this BEFORE you set the content object??? oh my god !!!! */
camel_data_wrapper_set_mime_type_field (content, camel_mime_part_get_content_type (dw));
camel_medium_set_content ((CamelMedium *)dw, content);
- camel_object_unref (content);
+ g_object_unref (content);
}
g_free (encoding);
((CamelMessageInfoBase *) info)->preview = camel_utf8_make_valid(str->str);
g_string_free(str, TRUE);
- camel_object_unref (bstream);
+ g_object_unref (bstream);
}
- camel_object_unref (mstream);
+ g_object_unref (mstream);
return TRUE;
}
#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
+#define CAMEL_MIME_PART_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MIME_PART, CamelMimePartPrivate))
+
struct _CamelMimePartPrivate {
/* TODO: these should be in a camelcontentinfo */
CamelTransferEncoding encoding;
};
+enum {
+ PROP_0,
+ PROP_CONTENT_ID,
+ PROP_CONTENT_LOCATION,
+ PROP_CONTENT_MD5,
+ PROP_DESCRIPTION,
+ PROP_DISPOSITION,
+ PROP_FILENAME
+};
+
typedef enum {
HEADER_UNKNOWN,
HEADER_DESCRIPTION,
static GHashTable *header_name_table;
static GHashTable *header_formatted_table;
-static gpointer camel_mime_part_parent_class;
+G_DEFINE_TYPE (CamelMimePart, camel_mime_part, CAMEL_TYPE_MEDIUM)
static gssize
write_raw (CamelStream *stream,
}
static void
-mime_part_finalize (CamelMimePart *mime_part)
+mime_part_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_CONTENT_ID:
+ camel_mime_part_set_content_id (
+ CAMEL_MIME_PART (object),
+ g_value_get_string (value));
+ return;
+
+ case PROP_CONTENT_MD5:
+ camel_mime_part_set_content_md5 (
+ CAMEL_MIME_PART (object),
+ g_value_get_string (value));
+ return;
+
+ case PROP_CONTENT_LOCATION:
+ camel_mime_part_set_content_location (
+ CAMEL_MIME_PART (object),
+ g_value_get_string (value));
+ return;
+
+ case PROP_DESCRIPTION:
+ camel_mime_part_set_description (
+ CAMEL_MIME_PART (object),
+ g_value_get_string (value));
+ return;
+
+ case PROP_DISPOSITION:
+ camel_mime_part_set_disposition (
+ CAMEL_MIME_PART (object),
+ g_value_get_string (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+mime_part_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- CamelMimePartPrivate *priv = mime_part->priv;
+ switch (property_id) {
+ case PROP_CONTENT_ID:
+ g_value_set_string (
+ value, camel_mime_part_get_content_id (
+ CAMEL_MIME_PART (object)));
+ return;
+
+ case PROP_CONTENT_MD5:
+ g_value_set_string (
+ value, camel_mime_part_get_content_md5 (
+ CAMEL_MIME_PART (object)));
+ return;
+
+ case PROP_CONTENT_LOCATION:
+ g_value_set_string (
+ value, camel_mime_part_get_content_location (
+ CAMEL_MIME_PART (object)));
+ return;
+
+ case PROP_DESCRIPTION:
+ g_value_set_string (
+ value, camel_mime_part_get_description (
+ CAMEL_MIME_PART (object)));
+ return;
+
+ case PROP_DISPOSITION:
+ g_value_set_string (
+ value, camel_mime_part_get_disposition (
+ CAMEL_MIME_PART (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+mime_part_finalize (GObject *object)
+{
+ CamelMimePartPrivate *priv;
+
+ priv = CAMEL_MIME_PART_GET_PRIVATE (object);
g_free (priv->description);
g_free (priv->content_id);
camel_string_list_free (priv->content_languages);
camel_content_disposition_unref (priv->disposition);
- camel_header_raw_clear(&mime_part->headers);
+ camel_header_raw_clear(&CAMEL_MIME_PART (object)->headers);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_mime_part_parent_class)->finalize (object);
}
static void
/* we simply add the header in a raw fashion */
/* If it was one of the headers we handled, it must be unique, set it instead of add */
- if (mime_part_process_header(medium, name, value))
+ if (mime_part_process_header (medium, name, value))
camel_header_raw_replace (&part->headers, name, value, -1);
else
camel_header_raw_append (&part->headers, name, value, -1);
if (charenc) {
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filter_stream), charenc);
- camel_object_unref (charenc);
+ g_object_unref (charenc);
}
/* we only re-do crlf on encoded blocks */
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filter_stream), crlf);
- camel_object_unref (crlf);
+ g_object_unref (crlf);
}
if (filter) {
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filter_stream), filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
}
stream = filter_stream;
if (filter_stream) {
errnosav = errno;
camel_stream_flush (stream);
- camel_object_unref (filter_stream);
+ g_object_unref (filter_stream);
errno = errnosav;
}
ret = camel_mime_part_construct_from_parser (
CAMEL_MIME_PART (dw), mp);
}
- camel_object_unref (mp);
+ g_object_unref (mp);
return ret;
}
static void
camel_mime_part_class_init (CamelMimePartClass *class)
{
+ GObjectClass *object_class;
CamelMediumClass *medium_class;
CamelDataWrapperClass *data_wrapper_class;
- camel_mime_part_parent_class = CAMEL_MEDIUM_CLASS (camel_type_get_global_classfuncs (camel_medium_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelMimePartPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = mime_part_set_property;
+ object_class->get_property = mime_part_get_property;
+ object_class->finalize = mime_part_finalize;
medium_class = CAMEL_MEDIUM_CLASS (class);
medium_class->add_header = mime_part_add_header;
class->construct_from_parser = mime_part_construct_from_parser;
+ g_object_class_install_property (
+ object_class,
+ PROP_CONTENT_ID,
+ g_param_spec_string (
+ "content-id",
+ "Content ID",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_CONTENT_MD5,
+ g_param_spec_string (
+ "content-md5",
+ "Content MD5",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_DESCRIPTION,
+ g_param_spec_string (
+ "description",
+ "Description",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_DISPOSITION,
+ g_param_spec_string (
+ "disposition",
+ "Disposition",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE));
+
init_header_name_table ();
}
{
CamelDataWrapper *data_wrapper;
- mime_part->priv = g_new0 (CamelMimePartPrivate, 1);
+ mime_part->priv = CAMEL_MIME_PART_GET_PRIVATE (mime_part);
mime_part->priv->encoding = CAMEL_TRANSFER_ENCODING_DEFAULT;
data_wrapper = CAMEL_DATA_WRAPPER (mime_part);
data_wrapper->mime_type = camel_content_type_new ("text", "plain");
}
-CamelType
-camel_mime_part_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_MEDIUM_TYPE,
- "CamelMimePart",
- sizeof (CamelMimePart),
- sizeof (CamelMimePartClass),
- (CamelObjectClassInitFunc) camel_mime_part_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_part_init,
- (CamelObjectFinalizeFunc) mime_part_finalize);
- }
-
- return type;
-}
-
/* **** Content-Description */
/**
text = camel_header_encode_string ((guchar *) description);
camel_medium_set_header (medium, "Content-Description", text);
g_free (text);
+
+ g_object_notify (G_OBJECT (mime_part), "description");
}
/**
text = camel_content_disposition_format (mime_part->priv->disposition);
camel_medium_set_header (medium, "Content-Disposition", text);
g_free (text);
+
+ g_object_notify (G_OBJECT (mime_part), "disposition");
}
/**
g_free (cid);
g_free (id);
+
+ g_object_notify (G_OBJECT (mime_part), "content-id");
}
/**
/* FIXME: this should perform content-location folding */
camel_medium_set_header (medium, "Content-Location", location);
+
+ g_object_notify (G_OBJECT (mime_part), "content-location");
}
/**
CamelMimePart *
camel_mime_part_new (void)
{
- return (CamelMimePart *)camel_object_new (CAMEL_MIME_PART_TYPE);
+ return g_object_new (CAMEL_TYPE_MIME_PART, NULL);
}
/**
camel_data_wrapper_set_mime_type (dw, type);
stream = camel_stream_mem_new_with_buffer (data, length);
camel_data_wrapper_construct_from_stream (dw, stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
camel_medium_set_content (medium, dw);
- camel_object_unref (dw);
+ g_object_unref (dw);
} else
camel_medium_set_content (medium, NULL);
}
camel_data_wrapper_decode_to_stream (dw, (CamelStream *) null);
size = null->written;
- camel_object_unref (null);
+ g_object_unref (null);
return size;
}
#include <camel/camel-mime-utils.h>
#include <camel/camel-mime-parser.h>
-#define CAMEL_MIME_PART_TYPE (camel_mime_part_get_type ())
-#define CAMEL_MIME_PART(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MIME_PART_TYPE, CamelMimePart))
-#define CAMEL_MIME_PART_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MIME_PART_TYPE, CamelMimePartClass))
-#define CAMEL_IS_MIME_PART(o) (CAMEL_CHECK_TYPE((o), CAMEL_MIME_PART_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MIME_PART \
+ (camel_mime_part_get_type ())
+#define CAMEL_MIME_PART(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MIME_PART, CamelMimePart))
+#define CAMEL_MIME_PART_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MIME_PART, CamelMimePartClass))
+#define CAMEL_IS_MIME_PART(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MIME_PART))
+#define CAMEL_IS_MIME_PART_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MIME_PART))
#define CAMEL_MIME_PART_GET_CLASS(obj) \
- ((CamelMimePartClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MIME_PART, CamelMimePartClass))
G_BEGIN_DECLS
CamelMimeParser *parser);
};
-CamelType camel_mime_part_get_type (void);
+GType camel_mime_part_get_type (void);
/* public methods */
CamelMimePart * camel_mime_part_new (void);
g_free(from);
}
- camel_object_unref (mp);
- camel_object_unref (ffrom);
+ g_object_unref (mp);
+ g_object_unref (ffrom);
return ret;
_("Error copying mail temp file: %s"),
g_strerror (errno));
- camel_object_unref (mp);
- camel_object_unref (ffrom);
+ g_object_unref (mp);
+ g_object_unref (ffrom);
return -1;
}
#include "camel-stream-fs.h"
#include "camel-stream-mem.h"
-static gpointer camel_multipart_encrypted_parent_class;
+G_DEFINE_TYPE (CamelMultipartEncrypted, camel_multipart_encrypted, CAMEL_TYPE_MULTIPART)
static void
-multipart_encrypted_finalize (CamelMultipartEncrypted *multipart)
+multipart_encrypted_dispose (GObject *object)
{
+ CamelMultipartEncrypted *multipart;
+
+ multipart = CAMEL_MULTIPART_ENCRYPTED (object);
+
+ if (multipart->decrypted) {
+ g_object_unref (multipart->decrypted);
+ multipart->decrypted = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_multipart_encrypted_parent_class)->dispose (object);
+}
+
+static void
+multipart_encrypted_finalize (GObject *object)
+{
+ CamelMultipartEncrypted *multipart;
+
+ multipart = CAMEL_MULTIPART_ENCRYPTED (object);
+
g_free (multipart->protocol);
- if (multipart->decrypted)
- camel_object_unref (multipart->decrypted);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_multipart_encrypted_parent_class)->finalize (object);
}
/* we snoop the mime type to get the protocol */
static void
camel_multipart_encrypted_class_init (CamelMultipartEncryptedClass *class)
{
+ GObjectClass *object_class;
CamelDataWrapperClass *data_wrapper_class;
- camel_multipart_encrypted_parent_class = (CamelMultipartClass *) camel_multipart_get_type ();
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = multipart_encrypted_dispose;
+ object_class->finalize = multipart_encrypted_finalize;
data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (class);
data_wrapper_class->set_mime_type_field =
multipart->decrypted = NULL;
}
-CamelType
-camel_multipart_encrypted_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_multipart_get_type (),
- "CamelMultipartEncrypted",
- sizeof (CamelMultipartEncrypted),
- sizeof (CamelMultipartEncryptedClass),
- (CamelObjectClassInitFunc) camel_multipart_encrypted_class_init,
- NULL,
- (CamelObjectInitFunc) camel_multipart_encrypted_init,
- (CamelObjectFinalizeFunc) multipart_encrypted_finalize);
- }
-
- return type;
-}
-
/**
* camel_multipart_encrypted_new:
*
CamelMultipartEncrypted *
camel_multipart_encrypted_new (void)
{
- return (CamelMultipartEncrypted *) camel_object_new (CAMEL_MULTIPART_ENCRYPTED_TYPE);
+ return g_object_new (CAMEL_TYPE_MULTIPART_ENCRYPTED, NULL);
}
#include <camel/camel-multipart.h>
-#define CAMEL_MULTIPART_ENCRYPTED_TYPE (camel_multipart_encrypted_get_type ())
-#define CAMEL_MULTIPART_ENCRYPTED(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MULTIPART_ENCRYPTED_TYPE, CamelMultipartEncrypted))
-#define CAMEL_MULTIPART_ENCRYPTED_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MULTIPART_ENCRYPTED_TYPE, CamelMultipartEncryptedClass))
-#define CAMEL_IS_MULTIPART_ENCRYPTED(o) (CAMEL_CHECK_TYPE((o), CAMEL_MULTIPART_ENCRYPTED_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MULTIPART_ENCRYPTED \
+ (camel_multipart_encrypted_get_type ())
+#define CAMEL_MULTIPART_ENCRYPTED(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MULTIPART_ENCRYPTED, CamelMultipartEncrypted))
+#define CAMEL_MULTIPART_ENCRYPTED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MULTIPART_ENCRYPTED, CamelMultipartEncryptedClass))
+#define CAMEL_IS_MULTIPART_ENCRYPTED(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MULTIPART_ENCRYPTED))
+#define CAMEL_IS_MULTIPART_ENCRYPTED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MULTIPART_ENCRYPTED))
+#define CAMEL_MULTIPART_ENCRYPTED_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MULTIPART_ENCRYPTED, CamelMultipartEncryptedClass))
G_BEGIN_DECLS
};
-CamelType camel_multipart_encrypted_get_type (void);
+GType camel_multipart_encrypted_get_type (void);
CamelMultipartEncrypted *camel_multipart_encrypted_new (void);
#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))
#include <stdio.h>;*/
-static gpointer camel_multipart_signed_parent_class;
+G_DEFINE_TYPE (CamelMultipartSigned, camel_multipart_signed, CAMEL_TYPE_MULTIPART)
static gint
multipart_signed_skip_content (CamelMimeParser *cmp)
camel_multipart_set_postface(mp, camel_mime_parser_postface(cmp));
}
- camel_object_unref (cmp);
+ g_object_unref (cmp);
if (mps->end2 == -1 || mps->start2 == -1) {
return -1;
CamelDataWrapper *dw = (CamelDataWrapper *)mps;
if (dw->stream)
- camel_object_unref (dw->stream);
+ g_object_unref (dw->stream);
dw->stream = stream;
mps->start1 = -1;
if (mps->content) {
- camel_object_unref (mps->content);
+ g_object_unref (mps->content);
mps->content = NULL;
}
if (mps->contentraw) {
- camel_object_unref (mps->contentraw);
+ g_object_unref (mps->contentraw);
mps->contentraw = NULL;
}
if (mps->signature) {
- camel_object_unref (mps->signature);
+ g_object_unref (mps->signature);
mps->signature = NULL;
}
}
static void
-multipart_signed_finalize (CamelMultipartSigned *mps)
+multipart_signed_dispose (GObject *object)
{
- g_free (mps->protocol);
- g_free (mps->micalg);
-\
- if (mps->signature)
- camel_object_unref (mps->signature);
- if (mps->content)
- camel_object_unref (mps->content);
- if (mps->contentraw)
- camel_object_unref (mps->contentraw);
+ CamelMultipartSigned *multipart;
+
+ multipart = CAMEL_MULTIPART_SIGNED (object);
+
+ if (multipart->signature != NULL) {
+ g_object_unref (multipart->signature);
+ multipart->signature = NULL;
+ }
+
+ if (multipart->content != NULL) {
+ g_object_unref (multipart->content);
+ multipart->content = NULL;
+ }
+
+ if (multipart->contentraw != NULL) {
+ g_object_unref (multipart->contentraw);
+ multipart->contentraw = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_multipart_signed_parent_class)->dispose (object);
+}
+
+static void
+multipart_signed_finalize (GObject *object)
+{
+ CamelMultipartSigned *multipart;
+
+ multipart = CAMEL_MULTIPART_SIGNED (object);
+
+ g_free (multipart->protocol);
+ g_free (multipart->micalg);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_multipart_signed_parent_class)->finalize (object);
}
static void
if (mps->content)
return mps->content;
if (mps->contentraw) {
- stream = camel_object_ref (mps->contentraw);
+ stream = g_object_ref (mps->contentraw);
} else if (mps->start1 == -1
&& multipart_signed_parse_content(mps) == -1
&& (stream = ((CamelDataWrapper *)mps)->stream) == NULL) {
} else if (dw->stream == NULL) {
return NULL;
} else if (mps->start1 == -1) {
- stream = camel_object_ref (dw->stream);
+ stream = g_object_ref (dw->stream);
} else {
stream = camel_seekable_substream_new((CamelSeekableStream *)dw->stream, mps->start1, mps->end1);
}
mps->content = camel_mime_part_new();
camel_data_wrapper_construct_from_stream (
CAMEL_DATA_WRAPPER (mps->content), stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
return mps->content;
case CAMEL_MULTIPART_SIGNED_SIGNATURE:
if (mps->signature)
mps->signature = camel_mime_part_new();
camel_data_wrapper_construct_from_stream (
CAMEL_DATA_WRAPPER (mps->signature), stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
return mps->signature;
default:
g_warning("trying to get object out of bounds for multipart");
static void
camel_multipart_signed_class_init (CamelMultipartSignedClass *class)
{
+ GObjectClass *object_class;
CamelDataWrapperClass *data_wrapper_class;
CamelMultipartClass *multipart_class;
- camel_multipart_signed_parent_class = (CamelMultipartClass *)camel_multipart_get_type();
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = multipart_signed_dispose;
+ object_class->finalize = multipart_signed_finalize;
data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (class);
data_wrapper_class->set_mime_type_field = multipart_signed_set_mime_type_field;
multipart->start1 = -1;
}
-CamelType
-camel_multipart_signed_get_type (void)
-{
- static CamelType camel_multipart_signed_type = CAMEL_INVALID_TYPE;
-
- if (camel_multipart_signed_type == CAMEL_INVALID_TYPE) {
- camel_multipart_signed_type = camel_type_register (camel_multipart_get_type (), "CamelMultipartSigned",
- sizeof (CamelMultipartSigned),
- sizeof (CamelMultipartSignedClass),
- (CamelObjectClassInitFunc) camel_multipart_signed_class_init,
- NULL,
- (CamelObjectInitFunc) camel_multipart_signed_init,
- (CamelObjectFinalizeFunc) multipart_signed_finalize);
- }
-
- return camel_multipart_signed_type;
-}
-
/**
* camel_multipart_signed_new:
*
CamelMultipartSigned *
camel_multipart_signed_new (void)
{
- return (CamelMultipartSigned *)camel_object_new(CAMEL_MULTIPART_SIGNED_TYPE);
+ return g_object_new (CAMEL_TYPE_MULTIPART_SIGNED, NULL);
}
/**
/* we need to be able to verify stuff we just signed as well as stuff we loaded from a stream/parser */
if (mps->contentraw) {
- constream = camel_object_ref (mps->contentraw);
+ constream = g_object_ref (mps->contentraw);
} else {
CamelStream *sub;
CamelMimeFilter *canon_filter;
/* first, prepare our parts */
sub = camel_seekable_substream_new((CamelSeekableStream *)((CamelDataWrapper *)mps)->stream, mps->start1, mps->end1);
constream = camel_stream_filter_new (sub);
- camel_object_unref (sub);
+ g_object_unref (sub);
/* Note: see rfc2015 or rfc3156, section 5 */
canon_filter = camel_mime_filter_canon_new (CAMEL_MIME_FILTER_CANON_CRLF);
camel_stream_filter_add((CamelStreamFilter *)constream, (CamelMimeFilter *)canon_filter);
- camel_object_unref (canon_filter);
+ g_object_unref (canon_filter);
}
return constream;
#include <camel/camel-multipart.h>
-#define CAMEL_MULTIPART_SIGNED_TYPE (camel_multipart_signed_get_type ())
-#define CAMEL_MULTIPART_SIGNED(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MULTIPART_SIGNED_TYPE, CamelMultipartSigned))
-#define CAMEL_MULTIPART_SIGNED_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MULTIPART_SIGNED_TYPE, CamelMultipartSignedClass))
-#define CAMEL_IS_MULTIPART_SIGNED(o) (CAMEL_CHECK_TYPE((o), CAMEL_MULTIPART_SIGNED_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MULTIPART_SIGNED \
+ (camel_multipart_signed_get_type ())
+#define CAMEL_MULTIPART_SIGNED(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MULTIPART_SIGNED, CamelMultipartSigned))
+#define CAMEL_MULTIPART_SIGNED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MULTIPART_SIGNED, CamelMultipartSignedClass))
+#define CAMEL_IS_MULTIPART_SIGNED(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MULTIPART_SIGNED))
+#define CAMEL_IS_MULTIPART_SIGNED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MULTIPART_SIGNED))
+#define CAMEL_MULTIPART_SIGNED_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MULTIPART_SIGNED, CamelMultipartSignedClass))
G_BEGIN_DECLS
CamelMultipartClass parent_class;
} CamelMultipartSignedClass;
-CamelType camel_multipart_signed_get_type (void);
+GType camel_multipart_signed_get_type (void);
/* public methods */
CamelMultipartSigned *camel_multipart_signed_new (void);
#define d(x)
-static gpointer camel_multipart_parent_class;
+G_DEFINE_TYPE (CamelMultipart, camel_multipart, CAMEL_TYPE_DATA_WRAPPER)
static void
-multipart_finalize (CamelMultipart *multipart)
+multipart_dispose (GObject *object)
{
- g_list_foreach (multipart->parts, (GFunc) camel_object_unref, NULL);
+ CamelMultipart *multipart = CAMEL_MULTIPART (object);
+
+ g_list_foreach (multipart->parts, (GFunc) g_object_unref, NULL);
g_list_free (multipart->parts);
multipart->parts = NULL;
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_multipart_parent_class)->dispose (object);
+}
+
+static void
+multipart_finalize (GObject *object)
+{
+ CamelMultipart *multipart = CAMEL_MULTIPART (object);
+
g_free (multipart->preface);
g_free (multipart->postface);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_multipart_parent_class)->finalize (object);
}
/* this is MIME specific, doesn't belong here really */
CamelMimePart *part)
{
multipart->parts = g_list_append (
- multipart->parts, camel_object_ref (part));
+ multipart->parts, g_object_ref (part));
}
static void
guint index)
{
multipart->parts = g_list_insert (
- multipart->parts, camel_object_ref (part), index);
+ multipart->parts, g_object_ref (part), index);
}
static void
return;
multipart->parts = g_list_remove (multipart->parts, part);
- camel_object_unref (part);
+ g_object_unref (part);
}
static CamelMimePart *
multipart->parts = g_list_remove_link (multipart->parts, link);
if (link->data)
- camel_object_unref (link->data);
+ g_object_unref (link->data);
g_list_free_1 (link);
return removed_part;
bodypart = camel_mime_part_new();
camel_mime_part_construct_from_parser (bodypart, mp);
camel_multipart_add_part(multipart, bodypart);
- camel_object_unref (bodypart);
+ g_object_unref (bodypart);
}
/* these are only return valid data in the MULTIPART_END state */
static void
camel_multipart_class_init (CamelMultipartClass *class)
{
+ GObjectClass *object_class;
CamelDataWrapperClass *data_wrapper_class;
- camel_multipart_parent_class = (CamelDataWrapperClass *) camel_data_wrapper_get_type ();
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = multipart_dispose;
+ object_class->finalize = multipart_finalize;
data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (class);
data_wrapper_class->write_to_stream = multipart_write_to_stream;
multipart->postface = NULL;
}
-CamelType
-camel_multipart_get_type (void)
-{
- static CamelType camel_multipart_type = CAMEL_INVALID_TYPE;
-
- if (camel_multipart_type == CAMEL_INVALID_TYPE) {
- camel_multipart_type = camel_type_register (camel_data_wrapper_get_type (), "CamelMultipart",
- sizeof (CamelMultipart),
- sizeof (CamelMultipartClass),
- (CamelObjectClassInitFunc) camel_multipart_class_init,
- NULL,
- (CamelObjectInitFunc) camel_multipart_init,
- (CamelObjectFinalizeFunc) multipart_finalize);
- }
-
- return camel_multipart_type;
-}
-
/**
* camel_multipart_new:
*
{
CamelMultipart *multipart;
- multipart = (CamelMultipart *)camel_object_new (CAMEL_MULTIPART_TYPE);
+ multipart = g_object_new (CAMEL_TYPE_MULTIPART, NULL);
multipart->preface = NULL;
multipart->postface = NULL;
*
* Remove the indicated part from the multipart object.
*
- * Returns: the removed part. Note that it is #camel_object_unref'ed
+ * Returns: the removed part. Note that it is #g_object_unref'ed
* before being returned, which may cause it to be destroyed.
**/
CamelMimePart *
#include <camel/camel-data-wrapper.h>
-#define CAMEL_MULTIPART_TYPE (camel_multipart_get_type ())
-#define CAMEL_MULTIPART(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MULTIPART_TYPE, CamelMultipart))
-#define CAMEL_MULTIPART_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MULTIPART_TYPE, CamelMultipartClass))
-#define CAMEL_IS_MULTIPART(o) (CAMEL_CHECK_TYPE((o), CAMEL_MULTIPART_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MULTIPART \
+ (camel_multipart_get_type ())
+#define CAMEL_MULTIPART(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MULTIPART, CamelMultipart))
+#define CAMEL_MULTIPART_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MULTIPART, CamelMultipartClass))
+#define CAMEL_IS_MULTIPART(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MULTIPART))
+#define CAMEL_IS_MULTIPART_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MULTIPART))
#define CAMEL_MULTIPART_GET_CLASS(obj) \
- ((CamelMultipartClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MULTIPART, CamelMultipartClass))
G_BEGIN_DECLS
/*int (*construct_from_stream)(CamelMultipart *, CamelStream *);*/
};
-CamelType camel_multipart_get_type (void);
+GType camel_multipart_get_type (void);
/* public methods */
CamelMultipart * camel_multipart_new (void);
#define d(x)
-static CamelAddressClass *camel_nntp_address_parent;
-
struct _address {
gchar *name;
gchar *address;
};
+G_DEFINE_TYPE (CamelNNTPAddress, camel_nntp_address, CAMEL_TYPE_ADDRESS)
+
/* since newsgropus are 7bit ascii, decode/unformat are the same */
static gint
nntp_address_decode (CamelAddress *address,
{
CamelAddressClass *address_class;
- camel_nntp_address_parent = CAMEL_ADDRESS_CLASS(camel_type_get_global_classfuncs(camel_address_get_type()));
-
address_class = CAMEL_ADDRESS_CLASS (class);
address_class->decode = nntp_address_decode;
address_class->encode = nntp_address_encode;
{
}
-CamelType
-camel_nntp_address_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_address_get_type(), "CamelNNTPAddress",
- sizeof (CamelNNTPAddress),
- sizeof (CamelNNTPAddressClass),
- (CamelObjectClassInitFunc) camel_nntp_address_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_address_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_nntp_address_new:
*
CamelNNTPAddress *
camel_nntp_address_new (void)
{
- return CAMEL_NNTP_ADDRESS(camel_object_new(camel_nntp_address_get_type()));
+ return g_object_new (CAMEL_TYPE_NNTP_ADDRESS, NULL);
}
/**
#include <camel/camel-address.h>
-#define CAMEL_NNTP_ADDRESS(obj) CAMEL_CHECK_CAST (obj, camel_nntp_address_get_type (), CamelNNTPAddress)
-#define CAMEL_NNTP_ADDRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_nntp_address_get_type (), CamelNNTPAddressClass)
-#define CAMEL_IS_NNTP_ADDRESS(obj) CAMEL_CHECK_TYPE (obj, camel_nntp_address_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_NNTP_ADDRESS \
+ (camel_nntp_address_get_type ())
+#define CAMEL_NNTP_ADDRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_NNTP_ADDRESS, CamelNNTPAddress))
+#define CAMEL_NNTP_ADDRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_NNTP_ADDRESS, CamelNNTPAddressClass))
+#define CAMEL_IS_NNTP_ADDRESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_NNTP_ADDRESS))
+#define CAMEL_IS_NNTP_ADDRESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_NNTP_ADDRESS))
+#define CAMEL_NNTP_ADDRESS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_NTTP_ADDRESS, CamelNNTPAddressClass))
G_BEGIN_DECLS
CamelAddressClass parent_class;
};
-CamelType camel_nntp_address_get_type (void);
+GType camel_nntp_address_get_type (void);
CamelNNTPAddress *
camel_nntp_address_new (void);
gint camel_nntp_address_add (CamelNNTPAddress *a,
--- /dev/null
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "camel-object-bag.h"
+
+#include <glib-object.h>
+
+typedef struct _KeyReservation KeyReservation;
+
+struct _KeyReservation {
+ gpointer key;
+ gint waiters;
+ GThread *owner;
+ GCond *cond;
+};
+
+struct _CamelObjectBag {
+ GHashTable *key_table;
+ GHashTable *object_table;
+ GEqualFunc key_equal_func;
+ CamelCopyFunc key_copy_func;
+ GFreeFunc key_free_func;
+ GSList *reserved; /* list of KeyReservations */
+ GMutex *mutex;
+};
+
+static KeyReservation *
+key_reservation_new (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ KeyReservation *reservation;
+
+ reservation = g_slice_new0 (KeyReservation);
+ reservation->key = bag->key_copy_func (key);
+ reservation->owner = g_thread_self ();
+ reservation->cond = g_cond_new ();
+
+ bag->reserved = g_slist_prepend (bag->reserved, reservation);
+
+ return reservation;
+}
+
+static KeyReservation *
+key_reservation_lookup (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ GSList *iter;
+
+ /* XXX Might be easier to use a GHashTable for reservations. */
+ for (iter = bag->reserved; iter != NULL; iter = iter->next) {
+ KeyReservation *reservation = iter->data;
+ if (bag->key_equal_func (reservation->key, key))
+ return reservation;
+ }
+
+ return NULL;
+}
+
+static void
+key_reservation_free (CamelObjectBag *bag,
+ KeyReservation *reservation)
+{
+ /* Make sure the reservation is actually in the object bag. */
+ g_return_if_fail (key_reservation_lookup (bag, reservation->key) != NULL);
+
+ bag->reserved = g_slist_remove (bag->reserved, reservation);
+
+ bag->key_free_func (reservation->key);
+ g_cond_free (reservation->cond);
+ g_slice_free (KeyReservation, reservation);
+}
+
+static void
+object_bag_notify (CamelObjectBag *bag,
+ GObject *where_the_object_was)
+{
+ gpointer key;
+
+ g_mutex_lock (bag->mutex);
+
+ key = g_hash_table_lookup (bag->key_table, where_the_object_was);
+ if (key != NULL) {
+ g_hash_table_remove (bag->key_table, where_the_object_was);
+ g_hash_table_remove (bag->object_table, key);
+ }
+
+ g_mutex_unlock (bag->mutex);
+}
+
+static void
+object_bag_weak_unref (gpointer key,
+ GObject *object,
+ CamelObjectBag *bag)
+{
+ g_object_weak_unref (object, (GWeakNotify) object_bag_notify, bag);
+}
+
+static void
+object_bag_unreserve (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ KeyReservation *reservation;
+
+ reservation = key_reservation_lookup (bag, key);
+ g_return_if_fail (reservation != NULL);
+ g_return_if_fail (reservation->owner == g_thread_self ());
+
+ if (reservation->waiters > 0) {
+ reservation->owner = NULL;
+ g_cond_signal (reservation->cond);
+ } else
+ key_reservation_free (bag, reservation);
+}
+
+/**
+ * camel_object_bag_new:
+ * @key_hash_func: a hashing function for keys
+ * @key_equal_func: a comparison function for keys
+ * @key_copy_func: a function to copy keys
+ * @key_free_func: a function to free keys
+ *
+ * Returns a new object bag. Object bags are keyed hash tables of objects
+ * that can be updated atomically using transaction semantics. Use
+ * camel_object_bag_destroy() to free the object bag.
+ *
+ * Returns: a newly-allocated #CamelObjectBag
+ **/
+CamelObjectBag *
+camel_object_bag_new (GHashFunc key_hash_func,
+ GEqualFunc key_equal_func,
+ CamelCopyFunc key_copy_func,
+ GFreeFunc key_free_func)
+{
+ CamelObjectBag *bag;
+ GHashTable *key_table;
+ GHashTable *object_table;
+
+ g_return_val_if_fail (key_hash_func != NULL, NULL);
+ g_return_val_if_fail (key_equal_func != NULL, NULL);
+ g_return_val_if_fail (key_copy_func != NULL, NULL);
+ g_return_val_if_fail (key_free_func != NULL, NULL);
+
+ /* Each key is shared between both hash tables, so only one
+ * table needs to be responsible for destroying keys. */
+
+ key_table = g_hash_table_new (g_direct_hash, g_direct_equal);
+
+ object_table = g_hash_table_new_full (
+ key_hash_func, key_equal_func,
+ (GDestroyNotify) key_free_func,
+ (GDestroyNotify) NULL);
+
+ bag = g_slice_new0 (CamelObjectBag);
+ bag->key_table = key_table;
+ bag->object_table = object_table;
+ bag->key_equal_func = key_equal_func;
+ bag->key_copy_func = key_copy_func;
+ bag->key_free_func = key_free_func;
+ bag->mutex = g_mutex_new ();
+
+ return bag;
+}
+
+/**
+ * camel_object_bag_get:
+ * @bag: a #CamelObjectBag
+ * @key: a key
+ *
+ * Lookup an object by @key. If the key is currently reserved, the function
+ * will block until another thread commits or aborts the reservation. The
+ * caller owns the reference to the returned object. Use g_object_unref ()
+ * to unreference it.
+ *
+ * Returns: the object corresponding to @key, or %NULL if not found
+ **/
+gpointer
+camel_object_bag_get (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ KeyReservation *reservation;
+ gpointer object;
+
+ g_return_val_if_fail (bag != NULL, NULL);
+ g_return_val_if_fail (key != NULL, NULL);
+
+ g_mutex_lock (bag->mutex);
+
+ /* Look for the key in the bag. */
+ object = g_hash_table_lookup (bag->object_table, key);
+ if (object != NULL) {
+ g_object_ref (object);
+ g_mutex_unlock (bag->mutex);
+ return object;
+ }
+
+ /* Check if the key has been reserved. */
+ reservation = key_reservation_lookup (bag, key);
+ if (reservation == NULL) {
+ /* No such key, so return NULL. */
+ g_mutex_unlock (bag->mutex);
+ return NULL;
+ }
+
+ /* Wait for the key to be unreserved. */
+ reservation->waiters++;
+ while (reservation->owner != NULL)
+ g_cond_wait (reservation->cond, bag->mutex);
+ reservation->waiters--;
+
+ /* Check if an object was added by another thread. */
+ object = g_hash_table_lookup (bag->object_table, key);
+ if (object != NULL)
+ g_object_ref (object);
+
+ /* We're not reserving it. */
+ reservation->owner = g_thread_self ();
+ object_bag_unreserve (bag, key);
+
+ g_mutex_unlock (bag->mutex);
+
+ return object;
+}
+
+/**
+ * camel_object_bag_peek:
+ * @bag: a #CamelObjectBag
+ * @key: an unreserved key
+ *
+ * Returns the object for @key in @bag, ignoring any reservations. If it
+ * isn't committed, then it isn't considered. This should only be used
+ * where reliable transactional-based state is not required.
+ *
+ * Unlink other "peek" operations, the caller owns the returned object
+ * reference. Use g_object_unref () to unreference it.
+ *
+ * Returns: the object for @key, or %NULL if @key is reserved or not found
+ **/
+gpointer
+camel_object_bag_peek (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ gpointer object;
+
+ g_return_val_if_fail (bag != NULL, NULL);
+ g_return_val_if_fail (key != NULL, NULL);
+
+ g_mutex_lock (bag->mutex);
+
+ object = g_hash_table_lookup (bag->object_table, key);
+ if (object != NULL)
+ g_object_ref (object);
+
+ g_mutex_unlock (bag->mutex);
+
+ return object;
+}
+
+/**
+ * camel_object_bag_reserve:
+ * @bag: a #CamelObjectBag
+ * @key: the key to reserve
+ *
+ * Reserves @key in @bag. If @key is already reserved in another thread,
+ * then wait until the reservation has been committed.
+ *
+ * After reserving @key, you either get a reference to the object
+ * corresponding to @key (similar to camel_object_bag_get()) or you get
+ * %NULL, signifying that you MUST call either camel_object_bag_add() or
+ * camel_object_bag_abort().
+ *
+ * Returns: the object for @key, or %NULL if @key is not found
+ **/
+gpointer
+camel_object_bag_reserve (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ KeyReservation *reservation;
+ gpointer object;
+
+ g_return_val_if_fail (bag != NULL, NULL);
+ g_return_val_if_fail (key != NULL, NULL);
+
+ g_mutex_lock (bag->mutex);
+
+ /* If object for key already exists, return it immediately. */
+ object = g_hash_table_lookup (bag->object_table, key);
+ if (object != NULL) {
+ g_object_ref (object);
+ g_mutex_unlock (bag->mutex);
+ return object;
+ }
+
+ /* If no such key exists in the bag, create a reservation. */
+ reservation = key_reservation_lookup (bag, key);
+ if (reservation == NULL) {
+ reservation = key_reservation_new (bag, key);
+ g_mutex_unlock (bag->mutex);
+ return NULL;
+ }
+
+ /* Wait for the reservation to be committed or aborted. */
+ reservation->waiters++;
+ while (reservation->owner != NULL)
+ g_cond_wait (reservation->cond, bag->mutex);
+ reservation->owner = g_thread_self ();
+ reservation->waiters--;
+
+ /* Check if the object was added by another thread. */
+ object = g_hash_table_lookup (bag->object_table, key);
+ if (object != NULL) {
+ /* We have an object; no need to reserve the key. */
+ object_bag_unreserve (bag, key);
+ g_object_ref (object);
+ }
+
+ g_mutex_unlock (bag->mutex);
+
+ return object;
+}
+
+/**
+ * camel_object_bag_add:
+ * @bag: a #CamelObjectBag
+ * @key: a reserved key
+ * @object: a #GObject
+ *
+ * Adds @object to @bag. The @key MUST have been previously reserved using
+ * camel_object_bag_reserve().
+ **/
+void
+camel_object_bag_add (CamelObjectBag *bag,
+ gconstpointer key,
+ gpointer object)
+{
+ g_return_if_fail (bag != NULL);
+ g_return_if_fail (key != NULL);
+ g_return_if_fail (G_IS_OBJECT (object));
+
+ g_mutex_lock (bag->mutex);
+
+ if (g_hash_table_lookup (bag->key_table, object) == NULL) {
+ gpointer copied_key;
+
+ copied_key = bag->key_copy_func (key);
+ g_hash_table_insert (bag->key_table, object, copied_key);
+ g_hash_table_insert (bag->object_table, copied_key, object);
+ object_bag_unreserve (bag, key);
+
+ g_object_weak_ref (
+ G_OBJECT (object), (GWeakNotify)
+ object_bag_notify, bag);
+ }
+
+ g_mutex_unlock (bag->mutex);
+}
+
+/**
+ * camel_object_bag_abort:
+ * @bag: a #CamelObjectBag
+ * @key: a reserved key
+ *
+ * Aborts a key reservation.
+ **/
+void
+camel_object_bag_abort (CamelObjectBag *bag,
+ gconstpointer key)
+{
+ g_return_if_fail (bag != NULL);
+ g_return_if_fail (key != NULL);
+
+ g_mutex_lock (bag->mutex);
+
+ object_bag_unreserve (bag, key);
+
+ g_mutex_unlock (bag->mutex);
+}
+
+/**
+ * camel_object_bag_rekey:
+ * @bag: a #CamelObjectBag
+ * @object: a #GObject
+ * @new_key: a new key for @object
+ *
+ * Changes the key for @object to @new_key, atomically.
+ *
+ * It is considered a programming error if @object is not found in @bag.
+ * In such case the function will emit a terminal warning and return.
+ **/
+void
+camel_object_bag_rekey (CamelObjectBag *bag,
+ gpointer object,
+ gconstpointer new_key)
+{
+ gpointer key;
+
+ g_return_if_fail (bag != NULL);
+ g_return_if_fail (G_IS_OBJECT (object));
+ g_return_if_fail (new_key != NULL);
+
+ g_mutex_lock (bag->mutex);
+
+ key = g_hash_table_lookup (bag->key_table, object);
+ if (key != NULL) {
+ /* Remove the old key. */
+ g_hash_table_remove (bag->object_table, key);
+ g_hash_table_remove (bag->key_table, object);
+
+ /* Insert the new key. */
+ key = bag->key_copy_func (new_key);
+ g_hash_table_insert (bag->object_table, key, object);
+ g_hash_table_insert (bag->key_table, object, key);
+ } else
+ g_warn_if_reached ();
+
+ g_mutex_unlock (bag->mutex);
+}
+
+/**
+ * camel_object_bag_list:
+ * @bag: a #CamelObjectBag
+ *
+ * Returns a #GPtrArray of all the objects in the bag. The caller owns
+ * both the array and the object references, so to free the array use:
+ *
+ * <informalexample>
+ * <programlisting>
+ * g_ptr_array_foreach (array, g_object_unref, NULL);
+ * g_ptr_array_free (array, TRUE);
+ * </programlisting>
+ * </informalexample>
+ *
+ * Returns: an array of objects in @bag
+ **/
+GPtrArray *
+camel_object_bag_list (CamelObjectBag *bag)
+{
+ GPtrArray *array;
+ GList *values;
+
+ g_return_val_if_fail (bag != NULL, NULL);
+
+ /* XXX Too bad we're not returning a GList; this would be trivial. */
+
+ array = g_ptr_array_new ();
+
+ g_mutex_lock (bag->mutex);
+
+ values = g_hash_table_get_values (bag->object_table);
+ while (values != NULL) {
+ g_ptr_array_add (array, g_object_ref (values->data));
+ values = g_list_delete_link (values, values);
+ }
+
+ g_mutex_unlock (bag->mutex);
+
+ return array;
+}
+
+/**
+ * camel_object_bag_remove:
+ * @bag: a #CamelObjectBag
+ * @object: a #GObject
+ *
+ * Removes @object from @bag.
+ **/
+void
+camel_object_bag_remove (CamelObjectBag *bag,
+ gpointer object)
+{
+ gpointer key;
+
+ g_return_if_fail (bag != NULL);
+ g_return_if_fail (G_IS_OBJECT (object));
+
+ g_mutex_lock (bag->mutex);
+
+ key = g_hash_table_lookup (bag->key_table, object);
+ if (key != NULL) {
+ object_bag_weak_unref (key, object, bag);
+ g_hash_table_remove (bag->key_table, object);
+ g_hash_table_remove (bag->object_table, key);
+ }
+
+ g_mutex_unlock (bag->mutex);
+}
+
+/**
+ * camel_object_bag_destroy:
+ * @bag: a #CamelObjectBag
+ *
+ * Frees @bag. As a precaution, the function will emit a warning to standard
+ * error and return without freeing @bag if @bag still has reserved keys.
+ **/
+void
+camel_object_bag_destroy (CamelObjectBag *bag)
+{
+ g_return_if_fail (bag != NULL);
+ g_return_if_fail (bag->reserved == NULL);
+
+ /* Drop remaining weak references. */
+ g_hash_table_foreach (
+ bag->object_table, (GHFunc)
+ object_bag_weak_unref, bag);
+
+ g_hash_table_destroy (bag->key_table);
+ g_hash_table_destroy (bag->object_table);
+ g_mutex_free (bag->mutex);
+ g_slice_free (CamelObjectBag, bag);
+}
--- /dev/null
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008 Novell, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* Manages bags of weakly-referenced GObjects. */
+
+#if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
+#error "Only <camel/camel.h> can be included directly."
+#endif
+
+#ifndef CAMEL_OBJECT_BAG_H
+#define CAMEL_OBJECT_BAG_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _CamelObjectBag CamelObjectBag;
+typedef gpointer (*CamelCopyFunc) (gconstpointer object);
+
+CamelObjectBag *camel_object_bag_new (GHashFunc key_hash_func,
+ GEqualFunc key_equal_func,
+ CamelCopyFunc key_copy_func,
+ GFreeFunc key_free_func);
+gpointer camel_object_bag_get (CamelObjectBag *bag,
+ gconstpointer key);
+gpointer camel_object_bag_peek (CamelObjectBag *bag,
+ gconstpointer key);
+gpointer camel_object_bag_reserve (CamelObjectBag *bag,
+ gconstpointer key);
+void camel_object_bag_add (CamelObjectBag *bag,
+ gconstpointer key,
+ gpointer object);
+void camel_object_bag_abort (CamelObjectBag *bag,
+ gconstpointer key);
+void camel_object_bag_rekey (CamelObjectBag *bag,
+ gpointer object,
+ gconstpointer new_key);
+GPtrArray * camel_object_bag_list (CamelObjectBag *bag);
+void camel_object_bag_remove (CamelObjectBag *bag,
+ gpointer object);
+void camel_object_bag_destroy (CamelObjectBag *bag);
+
+G_END_DECLS
+
+#endif /* CAMEL_OBJECT_BAG_H */
#include <stdio.h>
#include <string.h>
-#include <glib.h>
#include <glib/gstdio.h>
#include "camel-file-utils.h"
-#include "camel-list-utils.h"
#include "camel-object.h"
#define d(x)
#define b(x) /* object bag */
#define h(x) /* hooks */
-/* I just mashed the keyboard for these... */
-#define CAMEL_OBJECT_MAGIC 0x77A344ED
-#define CAMEL_OBJECT_CLASS_MAGIC 0xEE26A997
-#define CAMEL_INTERFACE_MAGIC 0xBCE137A7
-#define CAMEL_OBJECT_FINALISED_MAGIC 0x84AC365F
-#define CAMEL_OBJECT_CLASS_FINALISED_MAGIC 0x7621ABCD
-#define CAMEL_INTERFACE_FINALISED_MAGIC 0x7CB2FE71
+G_DEFINE_ABSTRACT_TYPE (CamelObject, camel_object, G_TYPE_OBJECT)
/* ** Quickie type system ************************************************* */
gpointer data;
} CamelHookPair;
-struct _CamelObjectBagKey {
- struct _CamelObjectBagKey *next;
-
- gpointer key; /* the key reserved */
- gint waiters; /* count of threads waiting for key */
- GThread *owner; /* the thread that has reserved the bag for a new entry */
- gint have_owner;
- GCond *cond;
-};
-
-struct _CamelObjectBag {
- GHashTable *object_table; /* object by key */
- GHashTable *key_table; /* key by object */
- GEqualFunc equal_key;
- CamelCopyFunc copy_key;
- GFreeFunc free_key;
-
- struct _CamelObjectBagKey *reserved;
-};
-
-/* used to tag a bag hookpair */
-static const gchar bag_name[] = "object:bag";
-
/* meta-data stuff */
static CamelHookPair *co_metadata_pair(CamelObject *obj, gint create);
static const gchar meta_name[] = "object:meta";
#define CAMEL_OBJECT_STATE_FILE_MAGIC "CLMD"
-/* interface stuff */
-static const gchar interface_name[] = "object:interface";
-
/* ********************************************************************** */
static CamelHookList *camel_object_get_hooks(CamelObject *o);
static void camel_object_free_hooks(CamelObject *o);
-static void camel_object_bag_remove_unlocked(CamelObjectBag *inbag, CamelObject *o, CamelHookList *hooks);
#define camel_object_unget_hooks(o) \
(g_static_rec_mutex_unlock(&CAMEL_OBJECT(o)->hooks->lock))
/* ********************************************************************** */
-/* type-lock must be recursive, for atomically creating classes */
-static GStaticRecMutex type_lock = G_STATIC_REC_MUTEX_INIT;
-/* ref-lock must be global :-( for object bags to work */
-static GMutex *ref_lock;
-
-static GHashTable *type_table;
-
-/* fundamental types are accessed via global */
-CamelType camel_object_type = CAMEL_INVALID_TYPE;
-CamelType camel_interface_type = CAMEL_INVALID_TYPE;
-
#define CLASS_LOCK(k) (g_mutex_lock((((CamelObjectClass *)k)->lock)))
#define CLASS_UNLOCK(k) (g_mutex_unlock((((CamelObjectClass *)k)->lock)))
#define REF_LOCK() (g_mutex_lock(ref_lock))
g_slice_free (CamelHookList, hooks);
}
-/* not checked locked, who cares, only required for people that want to redefine root objects */
-void
-camel_type_init(void)
-{
- static gint init = FALSE;
-
- if (init)
- return;
-
- init = TRUE;
- type_table = g_hash_table_new(NULL, NULL);
- ref_lock = g_mutex_new();
-}
-
/* ************************************************************************ */
/* CamelObject base methods */
-/* Should this return the object to the caller? */
-static void
-cobject_init(CamelObject *o, CamelObjectClass *klass)
-{
- o->klass = klass;
- o->magic = CAMEL_OBJECT_MAGIC;
- o->ref_count = 1;
- o->flags = 0;
-}
-
-static void
-cobject_finalize(CamelObject *o)
-{
- /*printf("%p: finalize %s\n", o, o->klass->name);*/
-
- if (o->ref_count == 0)
- return;
-
- camel_object_free_hooks(o);
-
- o->magic = CAMEL_OBJECT_FINALISED_MAGIC;
- o->klass = NULL;
-}
-
static gint
-cobject_getv(CamelObject *o, CamelException *ex, CamelArgGetV *args)
+cobject_getv (CamelObject *o,
+ CamelException *ex,
+ CamelArgGetV *args)
{
+ CamelObjectClass *class;
gint i;
guint32 tag;
+ class = CAMEL_OBJECT_GET_CLASS (o);
+
for (i=0;i<args->argc;i++) {
CamelArgGet *arg = &args->argv[i];
switch (tag & CAMEL_ARG_TAG) {
case CAMEL_OBJECT_ARG_DESCRIPTION:
- *arg->ca_str = (gchar *)o->klass->name;
+ *arg->ca_str = (gchar *) G_OBJECT_CLASS_NAME (class);
break;
case CAMEL_OBJECT_ARG_STATE_FILE: {
CamelHookPair *pair = co_metadata_pair(o, FALSE);
}
static gint
-cobject_setv(CamelObject *o, CamelException *ex, CamelArgV *args)
+cobject_setv (CamelObject *o,
+ CamelException *ex,
+ CamelArgV *args)
{
gint i;
guint32 tag;
}
static void
-cobject_class_init(CamelObjectClass *klass)
+object_dispose (GObject *object)
{
- klass->magic = CAMEL_OBJECT_CLASS_MAGIC;
-
- klass->getv = cobject_getv;
- klass->setv = cobject_setv;
- klass->free = cobject_free;
-
- klass->state_read = cobject_state_read;
- klass->state_write = cobject_state_write;
-
- camel_object_class_add_event(klass, "finalize", NULL);
-}
+ CamelObject *camel_object = CAMEL_OBJECT (object);
-static void
-cobject_class_finalize(CamelObjectClass * klass)
-{
- klass->magic = CAMEL_OBJECT_CLASS_FINALISED_MAGIC;
-
- g_free(klass);
-}
-
-/* this function must be called for any other in the object system */
-CamelType
-camel_object_get_type(void)
-{
- if (camel_object_type == CAMEL_INVALID_TYPE) {
- camel_type_init();
-
- camel_object_type = camel_type_register(NULL, "CamelObject", /*, 0, 0*/
- sizeof(CamelObject), sizeof(CamelObjectClass),
- cobject_class_init, cobject_class_finalize,
- cobject_init, cobject_finalize);
+ if (camel_object->hooks != NULL) {
+ camel_object_trigger_event (object, "finalize", NULL);
+ camel_object_free_hooks (camel_object);
}
- return camel_object_type;
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_object_parent_class)->dispose (object);
}
static void
-camel_type_class_init(CamelObjectClass *klass, CamelObjectClass *type)
-{
- if (type->parent)
- camel_type_class_init(klass, type->parent);
-
- if (type->klass_init)
- type->klass_init(klass);
-}
-
-static CamelType
-co_type_register(CamelType parent, const gchar * name,
- /*guint ver, guint rev,*/
- gsize object_size, gsize klass_size,
- CamelObjectClassInitFunc class_init,
- CamelObjectClassFinalizeFunc class_finalize,
- CamelObjectInitFunc object_init,
- CamelObjectFinalizeFunc object_finalize)
+camel_object_class_init (CamelObjectClass *class)
{
- CamelObjectClass *klass;
- /*int offset;
- gsize size;*/
-
- TYPE_LOCK();
-
- camel_type_init(); /* has a static boolean itself */
-
- /* Have to check creation, it might've happened in another thread before we got here */
- klass = g_hash_table_lookup(type_table, name);
- if (klass != NULL) {
- if (klass->klass_size != klass_size || klass->object_size != object_size
- || klass->klass_init != class_init || klass->klass_finalize != class_finalize
- || klass->init != object_init || klass->finalize != object_finalize) {
- g_warning("camel_type_register: Trying to re-register class '%s'", name);
- klass = NULL;
- }
- TYPE_UNLOCK();
- return klass;
- }
-
- /* this is for objects with no parent as part of their struct ('interfaces'?) */
- /*offset = parent?parent->klass_size:0;
- offset = (offset + 3) & (~3);
-
- size = offset + klass_size;
+ GObjectClass *object_class;
- klass = g_slice_alloc0(size);
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = object_dispose;
- klass->klass_size = size;
- klass->klass_data = offset;
+ class->hooks = NULL;
- offset = parent?parent->object_size:0;
- offset = (offset + 3) & (~3);
+ class->getv = cobject_getv;
+ class->setv = cobject_setv;
+ class->free = cobject_free;
- klass->object_size = offset + object_size;
- klass->object_data = offset;*/
-
- if (parent
- && klass_size < parent->klass_size) {
- g_warning("camel_type_register: '%s' has smaller class size than parent '%s'", name, parent->name);
- TYPE_UNLOCK();
- return NULL;
- }
+ class->state_read = cobject_state_read;
+ class->state_write = cobject_state_write;
- klass = g_slice_alloc0 (klass_size);
- klass->klass_size = klass_size;
- klass->object_size = object_size;
- klass->lock = g_mutex_new();
- klass->hooks = NULL;
-
- klass->parent = parent;
- if (parent) {
- klass->next = parent->child;
- parent->child = klass;
- }
- klass->name = name;
-
- /*klass->version = ver;
- klass->revision = rev;*/
-
- klass->klass_init = class_init;
- klass->klass_finalize = class_finalize;
-
- klass->init = object_init;
- klass->finalize = object_finalize;
-
- /* setup before class init, incase class init func uses the type or looks it up ? */
- g_hash_table_insert(type_table, (gpointer)name, klass);
-
- camel_type_class_init(klass, klass);
-
- TYPE_UNLOCK();
-
- return klass;
-}
-
-CamelType
-camel_type_register(CamelType parent, const gchar * name,
- /*guint ver, guint rev,*/
- gsize object_size, gsize klass_size,
- CamelObjectClassInitFunc class_init,
- CamelObjectClassFinalizeFunc class_finalize,
- CamelObjectInitFunc object_init,
- CamelObjectFinalizeFunc object_finalize)
-{
- if (parent != NULL && parent->magic != CAMEL_OBJECT_CLASS_MAGIC) {
- g_warning("camel_type_register: invalid junk parent class for '%s'", name);
- return NULL;
- }
-
- return co_type_register(parent, name, object_size, klass_size, class_init, class_finalize, object_init, object_finalize);
+ camel_object_class_add_event (class, "finalize", NULL);
}
static void
-camel_object_init(CamelObject *o, CamelObjectClass *klass, CamelType type)
-{
- if (type->parent)
- camel_object_init(o, klass, type->parent);
-
- if (type->init)
- type->init(o, klass);
-}
-
-CamelObject *
-camel_object_new(CamelType type)
-{
- CamelObject *o;
-
- if (type == NULL)
- return NULL;
-
- if (type->magic != CAMEL_OBJECT_CLASS_MAGIC)
- return NULL;
-
- CLASS_LOCK(type);
-
- o = g_slice_alloc0 (type->object_size);
-
-#ifdef CAMEL_OBJECT_TRACK_INSTANCES
- if (type->instances)
- type->instances->prev = o;
- o->next = type->instances;
- o->prev = NULL;
- type->instances = o;
-#endif
-
- CLASS_UNLOCK(type);
-
- camel_object_init(o, type, type);
-
- d(printf("%p: new %s()\n", o, o->klass->name));
-
- return o;
-}
-
-gpointer
-camel_object_ref (gpointer vo)
-{
- register CamelObject *o = vo;
-
- g_return_val_if_fail (CAMEL_IS_OBJECT (o), NULL);
-
- REF_LOCK();
-
- o->ref_count++;
- d(printf("%p: ref %s(%d)\n", o, o->klass->name, o->ref_count));
-
- REF_UNLOCK();
-
- return vo;
-}
-
-void
-camel_object_unref (gpointer vo)
-{
- register CamelObject *o = vo;
- register CamelObjectClass *klass, *k;
- CamelHookList *hooks = NULL;
-
- g_return_if_fail(CAMEL_IS_OBJECT(o));
-
- klass = o->klass;
-
- if (o->hooks)
- hooks = camel_object_get_hooks(o);
-
- REF_LOCK();
-
- o->ref_count--;
-
- d(printf("%p: unref %s(%d)\n", o, o->klass->name, o->ref_count));
-
- if (o->ref_count > 0
- || (o->flags & CAMEL_OBJECT_DESTROY)) {
- REF_UNLOCK();
- if (hooks)
- camel_object_unget_hooks(o);
- return;
- }
-
- o->flags |= CAMEL_OBJECT_DESTROY;
-
- if (hooks)
- camel_object_bag_remove_unlocked(NULL, o, hooks);
-
- REF_UNLOCK();
-
- if (hooks)
- camel_object_unget_hooks(o);
-
- camel_object_trigger_event(o, "finalize", NULL);
-
- k = klass;
- while (k) {
- if (k->finalize)
- k->finalize(o);
- k = k->parent;
- }
-
- o->magic = CAMEL_OBJECT_FINALISED_MAGIC;
-
- CLASS_LOCK(klass);
-#ifdef CAMEL_OBJECT_TRACK_INSTANCES
- if (o->prev)
- o->prev->next = o->next;
- else
- klass->instances = o->next;
- if (o->next)
- o->next->prev = o->prev;
-#endif
- g_slice_free1 (klass->object_size, o);
- CLASS_UNLOCK(klass);
-}
-
-const gchar *
-camel_type_to_name(CamelType type)
-{
- if (type == NULL)
- return "(NULL class)";
-
- if (type->magic == CAMEL_OBJECT_CLASS_MAGIC)
- return type->name;
-
- if (type->magic == CAMEL_INTERFACE_MAGIC)
- return type->name;
-
- return "(Junk class)";
-}
-
-CamelType camel_name_to_type(const gchar *name)
-{
- /* TODO: Load a class off disk (!) */
-
- return g_hash_table_lookup(type_table, name);
-}
-
-static gchar *
-desc_data(CamelObject *o, guint32 ok)
+camel_object_init (CamelObject *object)
{
- gchar *what;
-
- if (o == NULL)
- what = g_strdup("NULL OBJECT");
- else if (o->magic == ok)
- what = NULL;
- else if (o->magic == CAMEL_OBJECT_MAGIC)
- what = g_strdup_printf("CLASS '%s'", ((CamelObjectClass *)o)->name);
- else if (o->magic == CAMEL_OBJECT_CLASS_MAGIC)
- what = g_strdup_printf("CLASS '%s'", ((CamelObjectClass *)o)->name);
- else if (o->magic == CAMEL_INTERFACE_MAGIC)
- what = g_strdup_printf("INTERFACE '%s'", ((CamelObjectClass *)o)->name);
- else if (o->magic == CAMEL_OBJECT_FINALISED_MAGIC)
- what = g_strdup_printf("finalized OBJECT");
- else if (o->magic == CAMEL_OBJECT_CLASS_FINALISED_MAGIC)
- what = g_strdup_printf("finalized CLASS");
- else if (o->magic == CAMEL_INTERFACE_FINALISED_MAGIC)
- what = g_strdup_printf("finalized INTERFACE");
- else
- what = g_strdup_printf("junk data");
-
- return what;
-}
-
-#define check_magic(o, ctype, omagic) \
- ( ((CamelObject *)(o))->magic == (omagic) \
- && (ctype)->magic == CAMEL_OBJECT_CLASS_MAGIC) \
- ? 1 : check_magic_fail(o, ctype, omagic)
-
-static gboolean
-check_magic_fail(gpointer o, CamelType ctype, guint32 omagic)
-{
- gchar *what, *to;
-
- what = desc_data(o, omagic);
- to = desc_data((CamelObject *)ctype, CAMEL_OBJECT_CLASS_MAGIC);
-
- if (what || to) {
- if (what == NULL) {
- if (omagic == CAMEL_OBJECT_MAGIC)
- what = g_strdup_printf("OBJECT '%s'", ((CamelObject *)o)->klass->name);
- else
- what = g_strdup_printf("OBJECT '%s'", ((CamelObjectClass *)o)->name);
- }
- if (to == NULL)
- to = g_strdup_printf("OBJECT '%s'", ctype->name);
- g_warning("Trying to check %s is %s", what, to);
- g_free(what);
- g_free(to);
-
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-camel_object_is(CamelObject *o, CamelType ctype)
-{
- CamelObjectClass *k;
-
- g_return_val_if_fail(o != NULL, FALSE);
- g_return_val_if_fail(check_magic(o, ctype, CAMEL_OBJECT_MAGIC), FALSE);
-
- k = o->klass;
- while (k) {
- if (k == ctype)
- return TRUE;
- k = k->parent;
- }
-
- return FALSE;
-}
-
-gboolean
-camel_object_class_is(CamelObjectClass *k, CamelType ctype)
-{
- g_return_val_if_fail(k != NULL, FALSE);
- g_return_val_if_fail(check_magic(k, ctype, CAMEL_OBJECT_CLASS_MAGIC), FALSE);
-
- while (k) {
- if (k == ctype)
- return TRUE;
- k = k->parent;
- }
-
- return FALSE;
-}
-
-CamelObject *
-camel_object_cast(CamelObject *o, CamelType ctype)
-{
- CamelObjectClass *k;
-
- g_return_val_if_fail(o != NULL, NULL);
- g_return_val_if_fail(check_magic(o, ctype, CAMEL_OBJECT_MAGIC), NULL);
-
- k = o->klass;
- while (k) {
- if (k == ctype)
- return o;
- k = k->parent;
- }
-
- g_warning("Object %p (class '%s') doesn't have '%s' in its hierarchy", (gpointer) o, o->klass->name, ctype->name);
-
- return NULL;
-}
-
-CamelObjectClass *
-camel_object_class_cast(CamelObjectClass *k, CamelType ctype)
-{
- CamelObjectClass *r = k;
-
- g_return_val_if_fail(check_magic(k, ctype, CAMEL_OBJECT_CLASS_MAGIC), NULL);
-
- while (k) {
- if (k == ctype)
- return r;
- k = k->parent;
- }
-
- g_warning("Class '%s' doesn't have '%s' in its hierarchy", r->name, ctype->name);
-
- return NULL;
-}
-
-static CamelHookPair *
-co_find_pair(CamelObjectClass *klass, const gchar *name)
-{
- CamelHookPair *hook;
-
- hook = klass->hooks;
- while (hook) {
- if (strcmp(hook->name, name) == 0)
- return hook;
- hook = hook->next;
- }
-
- return NULL;
}
static CamelHookPair *
-co_find_pair_ptr(CamelObjectClass *klass, const gchar *name)
+co_find_pair (CamelObjectClass *class,
+ const gchar *name)
{
CamelHookPair *hook;
- hook = klass->hooks;
+ hook = class->hooks;
while (hook) {
- if (hook->name == name)
+ if (strcmp (hook->name, name) == 0)
return hook;
hook = hook->next;
}
/* class functions */
void
-camel_object_class_add_event(CamelObjectClass *klass, const gchar *name, CamelObjectEventPrepFunc prep)
+camel_object_class_add_event (CamelObjectClass *class,
+ const gchar *name,
+ CamelObjectEventPrepFunc prep)
{
CamelHookPair *pair;
g_return_if_fail (name);
- pair = co_find_pair(klass, name);
+ pair = co_find_pair (class, name);
if (pair) {
- g_warning("camel_object_class_add_event: '%s' is already declared for '%s'",
- name, klass->name);
+ g_warning ("%s: '%s' is already declared for '%s'",
+ G_STRFUNC, name, G_OBJECT_CLASS_NAME (class));
return;
}
- if (klass->magic == CAMEL_INTERFACE_MAGIC && prep != NULL) {
- g_warning("camel_object_class_add_event: '%s', CamelInterface '%s' may not have an event prep function - ignored",
- name, klass->name);
- prep = NULL;
- }
-
- pair = pair_alloc();
+ pair = pair_alloc ();
pair->name = name;
pair->func.prep = prep;
pair->flags = 0;
- pair->next = klass->hooks;
- klass->hooks = pair;
+ pair->next = class->hooks;
+ class->hooks = pair;
}
/* free hook data */
static void
camel_object_free_hooks(CamelObject *o)
{
- CamelHookPair *pair, *next;
+ CamelHookPair *pair, *next;
- if (o->hooks) {
- g_assert(o->hooks->depth == 0);
- g_assert((o->hooks->flags & CAMEL_HOOK_PAIR_REMOVED) == 0);
+ if (o->hooks) {
+ g_assert(o->hooks->depth == 0);
+ g_assert((o->hooks->flags & CAMEL_HOOK_PAIR_REMOVED) == 0);
- pair = o->hooks->list;
- while (pair) {
- next = pair->next;
+ pair = o->hooks->list;
+ while (pair) {
+ next = pair->next;
- pair_free(pair);
- pair = next;
- }
- g_static_rec_mutex_free(&o->hooks->lock);
- hooks_free(o->hooks);
- o->hooks = NULL;
- }
+ pair_free(pair);
+ pair = next;
+ }
+ g_static_rec_mutex_free(&o->hooks->lock);
+ hooks_free(o->hooks);
+ o->hooks = NULL;
+ }
}
/* return (allocate if required) the object's hook list, locking at the same time */
}
guint
-camel_object_hook_event(gpointer vo, const gchar * name, CamelObjectEventHookFunc func, gpointer data)
+camel_object_hook_event (gpointer vo,
+ const gchar *name,
+ CamelObjectEventHookFunc func,
+ gpointer data)
{
CamelObject *obj = vo;
+ CamelObjectClass *class;
CamelHookPair *pair, *hook;
CamelHookList *hooks;
gint id;
g_return_val_if_fail(name != NULL, 0);
g_return_val_if_fail(func != NULL, 0);
- hook = co_find_pair(obj->klass, name);
+ class = CAMEL_OBJECT_GET_CLASS (obj);
+
+ hook = co_find_pair(class, name);
/* Check all interfaces on this object for events defined on them */
if (hook == NULL) {
- pair = co_find_pair_ptr(obj->klass, interface_name);
- if (pair) {
- GPtrArray *interfaces = pair->data;
- gint i;
-
- for (i=0;i<interfaces->len;i++) {
- hook = co_find_pair(interfaces->pdata[i], name);
- if (hook)
- goto setup;
- }
- }
-
g_warning("camel_object_hook_event: trying to hook event '%s' in class '%s' with no defined events.",
- name, obj->klass->name);
+ name, G_OBJECT_CLASS_NAME (class));
return 0;
}
-setup:
+
/* setup hook pair */
pair = pair_alloc();
pair->name = hook->name; /* effectively static! */
}
void
-camel_object_remove_event(gpointer vo, guint id)
+camel_object_remove_event (gpointer vo,
+ guint id)
{
CamelObject *obj = vo;
CamelHookList *hooks;
if (obj->hooks == NULL) {
g_warning("camel_object_unhook_event: trying to unhook '%u' from an instance of '%s' with no hooks",
- id, obj->klass->name);
+ id, G_OBJECT_TYPE_NAME (obj));
return;
}
camel_object_unget_hooks(obj);
g_warning("camel_object_unhook_event: cannot find hook id %u in instance of '%s'",
- id, obj->klass->name);
+ id, G_OBJECT_TYPE_NAME (obj));
}
void
-camel_object_unhook_event(gpointer vo, const gchar * name, CamelObjectEventHookFunc func, gpointer data)
+camel_object_unhook_event (gpointer vo,
+ const gchar *name,
+ CamelObjectEventHookFunc func,
+ gpointer data)
{
CamelObject *obj = vo;
CamelHookList *hooks;
if (obj->hooks == NULL) {
g_warning("camel_object_unhook_event: trying to unhook '%s' from an instance of '%s' with no hooks",
- name, obj->klass->name);
+ name, G_OBJECT_TYPE_NAME (obj));
return;
}
camel_object_unget_hooks(obj);
g_warning("camel_object_unhook_event: cannot find hook/data pair %p/%p in an instance of '%s' attached to '%s'",
- (gpointer) func, data, obj->klass->name, name);
+ (gpointer) func, data, G_OBJECT_TYPE_NAME (obj), name);
}
void
-camel_object_trigger_event(gpointer vo, const gchar * name, gpointer event_data)
+camel_object_trigger_event (gpointer vo,
+ const gchar *name,
+ gpointer event_data)
{
CamelObject *obj = vo;
+ CamelObjectClass *class;
CamelHookList *hooks;
CamelHookPair *pair, **pairs, *parent, *hook;
gint i, size;
g_return_if_fail (CAMEL_IS_OBJECT (obj));
g_return_if_fail (name);
- hook = co_find_pair(obj->klass, name);
+ class = CAMEL_OBJECT_GET_CLASS (obj);
+
+ hook = co_find_pair(class, name);
if (hook)
goto trigger;
if (obj->hooks == NULL)
return;
- /* interface events can't have prep functions */
- pair = co_find_pair_ptr(obj->klass, interface_name);
- if (pair) {
- GPtrArray *interfaces = pair->data;
-
- for (i=0;i<interfaces->len;i++) {
- hook = co_find_pair(interfaces->pdata[i], name);
- if (hook)
- goto trigger_interface;
- }
- }
-
g_warning("camel_object_trigger_event: trying to trigger unknown event '%s' in class '%s'",
- name, obj->klass->name);
+ name, G_OBJECT_TYPE_NAME (obj));
return;
if (obj->hooks == NULL)
return;
-trigger_interface:
/* lock the object for hook emission */
- camel_object_ref (obj);
+ g_object_ref(obj);
hooks = camel_object_get_hooks(obj);
if (hooks->list) {
}
camel_object_unget_hooks(obj);
- camel_object_unref (obj);
+ g_object_unref(obj);
}
/* get/set arg methods */
-gint camel_object_set(gpointer vo, CamelException *ex, ...)
+gint
+camel_object_set (gpointer vo,
+ CamelException *ex,
+ ...)
{
+ CamelObjectClass *class;
CamelArgV args;
CamelObject *o = vo;
- CamelObjectClass *klass = o->klass;
gint ret = 0;
g_return_val_if_fail(CAMEL_IS_OBJECT(o), -1);
camel_argv_start(&args, ex);
+ class = CAMEL_OBJECT_GET_CLASS (o);
+ g_return_val_if_fail (class->setv != NULL, -1);
+
while (camel_argv_build(&args) && ret == 0)
- ret = klass->setv(o, ex, &args);
+ ret = class->setv(o, ex, &args);
if (ret == 0)
- ret = klass->setv(o, ex, &args);
+ ret = class->setv(o, ex, &args);
camel_argv_end(&args);
return ret;
}
-gint camel_object_setv(gpointer vo, CamelException *ex, CamelArgV *args)
+gint
+camel_object_setv (gpointer vo,
+ CamelException *ex,
+ CamelArgV *args)
{
+ CamelObjectClass *class;
+
g_return_val_if_fail(CAMEL_IS_OBJECT(vo), -1);
- return ((CamelObject *)vo)->klass->setv(vo, ex, args);
+ class = CAMEL_OBJECT_GET_CLASS (vo);
+ g_return_val_if_fail (class->setv != NULL, -1);
+
+ return class->setv (vo, ex, args);
}
-gint camel_object_get(gpointer vo, CamelException *ex, ...)
+gint
+camel_object_get (gpointer vo,
+ CamelException *ex,
+ ...)
{
+ CamelObjectClass *class;
CamelObject *o = vo;
CamelArgGetV args;
- CamelObjectClass *klass = o->klass;
gint ret = 0;
g_return_val_if_fail(CAMEL_IS_OBJECT(o), -1);
camel_argv_start(&args, ex);
+ class = CAMEL_OBJECT_GET_CLASS (o);
+ g_return_val_if_fail (class->getv != NULL, -1);
+
while (camel_arggetv_build(&args) && ret == 0)
- ret = klass->getv(o, ex, &args);
+ ret = class->getv(o, ex, &args);
if (ret == 0)
- ret = klass->getv(o, ex, &args);
+ ret = class->getv(o, ex, &args);
camel_argv_end(&args);
return ret;
}
-gint camel_object_getv(gpointer vo, CamelException *ex, CamelArgGetV *args)
+gint
+camel_object_getv (gpointer vo,
+ CamelException *ex,
+ CamelArgGetV *args)
{
+ CamelObjectClass *class;
+
g_return_val_if_fail(CAMEL_IS_OBJECT(vo), -1);
- return ((CamelObject *)vo)->klass->getv(vo, ex, args);
+ class = CAMEL_OBJECT_GET_CLASS (vo);
+ g_return_val_if_fail (class->getv != NULL, -1);
+
+ return class->getv (vo, ex, args);
}
/* NB: If this doesn't return NULL, then you must unget_hooks when done */
if (fp != NULL) {
if (fread(magic, 4, 1, fp) == 1
&& memcmp(magic, CAMEL_OBJECT_STATE_FILE_MAGIC, 4) == 0)
- res = obj->klass->state_read(obj, fp);
+ res = CAMEL_OBJECT_GET_CLASS (obj)->state_read(obj, fp);
else
res = -1;
fclose(fp);
fp = g_fopen(savename, "wb");
if (fp != NULL) {
if (fwrite(CAMEL_OBJECT_STATE_FILE_MAGIC, 4, 1, fp) == 1
- && obj->klass->state_write(obj, fp) == 0) {
+ && CAMEL_OBJECT_GET_CLASS (obj)->state_write(obj, fp) == 0) {
if (fclose(fp) == 0) {
res = 0;
g_rename(savename, file);
This would also let us copy and do other things with args
we can't do, but i can't see a use for that yet ... */
- ((CamelObject *)vo)->klass->free(vo, tag, value);
-}
-
-static void
-object_class_dump_tree_rec(CamelType root, gint depth)
-{
- gchar *p;
-#ifdef CAMEL_OBJECT_TRACK_INSTANCES
- struct _CamelObject *o;
-#endif
-
- p = alloca(depth*2+1);
- memset(p, ' ', depth*2);
- p[depth*2] = 0;
-
- while (root) {
- CLASS_LOCK(root);
- printf("%sClass: %s\n", p, root->name);
- /*printf("%sVersion: %u.%u\n", p, root->version, root->revision);*/
- if (root->hooks) {
- CamelHookPair *pair = root->hooks;
-
- while (pair) {
- printf("%s event '%s' prep %p\n", p, pair->name, (gpointer) pair->func.prep);
- pair = pair->next;
- }
- }
-
-#ifdef CAMEL_OBJECT_TRACK_INSTANCES
- o = root->instances;
- while (o) {
- printf("%s instance %p [%d]\n", p, (gpointer) o, o->ref_count);
- /* todo: should lock hooks while it scans them */
- if (o->hooks) {
- CamelHookPair *pair = o->hooks->list;
-
- while (pair) {
- printf("%s hook '%s' func %p data %p\n", p, pair->name, (gpointer) pair->func.event, (gpointer) pair->data);
- pair = pair->next;
- }
- }
- o = o->next;
- }
-#endif
- CLASS_UNLOCK(root);
-
- if (root->child)
- object_class_dump_tree_rec(root->child, depth+1);
-
- root = root->next;
- }
-}
-
-void
-camel_object_class_dump_tree(CamelType root)
-{
- object_class_dump_tree_rec(root, 0);
-}
-
-/**
- * camel_object_bag_new:
- * @hash:
- * @equal:
- * @keycopy:
- * @keyfree:
- *
- * Allocate a new object bag. Object bag's are key'd hash tables of
- * camel-objects which can be updated atomically using transaction
- * semantics.
- *
- * Returns:
- **/
-CamelObjectBag *
-camel_object_bag_new(GHashFunc hash, GEqualFunc equal, CamelCopyFunc keycopy, GFreeFunc keyfree)
-{
- CamelObjectBag *bag;
-
- bag = g_malloc(sizeof(*bag));
- bag->object_table = g_hash_table_new(hash, equal);
- bag->equal_key = equal;
- bag->copy_key = keycopy;
- bag->free_key = keyfree;
- bag->key_table = g_hash_table_new(NULL, NULL);
- bag->reserved = NULL;
-
- return bag;
-}
-
-static void
-save_object(gpointer key, CamelObject *o, GPtrArray *objects)
-{
- g_ptr_array_add(objects, o);
-}
-
-void
-camel_object_bag_destroy(CamelObjectBag *bag)
-{
- GPtrArray *objects = g_ptr_array_new();
- gint i;
-
- g_assert(bag->reserved == NULL);
-
- g_hash_table_foreach(bag->object_table, (GHFunc)save_object, objects);
- for (i=0;i<objects->len;i++)
- camel_object_bag_remove(bag, objects->pdata[i]);
-
- g_ptr_array_free(objects, TRUE);
- g_hash_table_destroy(bag->object_table);
- g_hash_table_destroy(bag->key_table);
- g_free(bag);
-}
-
-/* must be called with ref_lock held */
-static void
-co_bag_unreserve(CamelObjectBag *bag, gconstpointer key)
-{
- struct _CamelObjectBagKey *res, *resp;
-
- resp = (struct _CamelObjectBagKey *)&bag->reserved;
- res = resp->next;
- while (res) {
- if (bag->equal_key(res->key, key))
- break;
- resp = res;
- res = res->next;
- }
-
- g_assert(res != NULL);
- g_assert(res->have_owner && res->owner == g_thread_self ());
-
- if (res->waiters > 0) {
- b(printf("unreserve bag '%s', waking waiters\n", (gchar *)key));
- res->have_owner = FALSE;
- g_cond_signal(res->cond);
- } else {
- b(printf("unreserve bag '%s', no waiters, freeing reservation\n", (gchar *)key));
- resp->next = res->next;
- bag->free_key(res->key);
- g_cond_free(res->cond);
- g_free(res);
- }
-}
-
-/**
- * camel_object_bag_add:
- * @bag:
- * @key:
- * @vo:
- *
- * Add an object @vo to the object bag @bag. The @key MUST have
- * previously been reserved using camel_object_bag_reserve().
- **/
-void
-camel_object_bag_add(CamelObjectBag *bag, gconstpointer key, gpointer vo)
-{
- CamelObject *o = vo;
- CamelHookList *hooks;
- CamelHookPair *pair;
- gpointer k;
-
- hooks = camel_object_get_hooks(o);
- REF_LOCK();
-
- pair = hooks->list;
- while (pair) {
- if (pair->name == bag_name && pair->data == bag) {
- REF_UNLOCK();
- camel_object_unget_hooks(o);
- return;
- }
- pair = pair->next;
- }
-
- pair = pair_alloc();
- pair->name = bag_name;
- pair->data = bag;
- pair->flags = 0;
- pair->func.event = NULL;
-
- pair->next = hooks->list;
- hooks->list = pair;
- hooks->list_length++;
-
- k = bag->copy_key(key);
- g_hash_table_insert(bag->object_table, k, vo);
- g_hash_table_insert(bag->key_table, vo, k);
-
- co_bag_unreserve(bag, key);
-
- REF_UNLOCK();
- camel_object_unget_hooks(o);
-}
-
-/**
- * camel_object_bag_get:
- * @bag:
- * @key:
- *
- * Lookup an object by @key. If the key is currently reserved, then
- * wait until the key has been committed before continuing.
- *
- * Returns: NULL if the object corresponding to @key is not
- * in the bag. Otherwise a ref'd object pointer which the caller owns
- * the ref to.
- **/
-gpointer
-camel_object_bag_get(CamelObjectBag *bag, gconstpointer key)
-{
- CamelObject *o;
-
- REF_LOCK();
-
- o = g_hash_table_lookup(bag->object_table, key);
- if (o) {
- b(printf("object bag get '%s' = %p\n", (gchar *)key, o));
-
- /* we use the same lock as the refcount */
- o->ref_count++;
- } else {
- struct _CamelObjectBagKey *res = bag->reserved;
-
- /* check if this name is reserved currently, if so wait till its finished */
- while (res) {
- if (bag->equal_key(res->key, key))
- break;
- res = res->next;
- }
-
- if (res) {
- b(printf("object bag get '%s', reserved, waiting\n", (gchar *)key));
-
- res->waiters++;
- g_assert(!res->have_owner || res->owner != g_thread_self ());
- g_cond_wait(res->cond, ref_lock);
- res->waiters--;
-
- /* re-check if it slipped in */
- o = g_hash_table_lookup(bag->object_table, key);
- if (o)
- o->ref_count++;
-
- b(printf("object bag get '%s', finished waiting, got %p\n", (gchar *)key, o));
-
- /* we don't actually reserve it */
- res->owner = g_thread_self ();
- res->have_owner = TRUE;
- co_bag_unreserve(bag, key);
- }
- }
-
- REF_UNLOCK();
-
- return o;
-}
-
-/**
- * camel_object_bag_peek:
- * @bag:
- * @key:
- *
- * Lookup the object @key in @bag, ignoring any reservations. If it
- * isn't committed, then it isn't considered. This should only be
- * used where reliable transactional-based state is not required.
- *
- * Unlike other 'peek' operations, the object is still reffed if
- * found.
- *
- * Returns: A referenced object, or NULL if @key is not
- * present in the bag.
- **/
-gpointer
-camel_object_bag_peek(CamelObjectBag *bag, gconstpointer key)
-{
- CamelObject *o;
-
- REF_LOCK();
-
- o = g_hash_table_lookup(bag->object_table, key);
- if (o) {
- /* we use the same lock as the refcount */
- o->ref_count++;
- }
-
- REF_UNLOCK();
-
- return o;
-}
-
-/**
- * camel_object_bag_reserve:
- * @bag:
- * @key:
- *
- * Reserve a key in the object bag. If the key is already reserved in
- * another thread, then wait until the reservation has been committed.
- *
- * After reserving a key, you either get a reffed pointer to the
- * object corresponding to the key, similar to object_bag_get, or you
- * get NULL, signifying that you then MIST call either object_bag_add
- * or object_bag_abort.
- *
- * You may reserve multiple keys from the same thread, but they should
- * always be reserved in the same order, to avoid deadlocks.
- *
- * Returns:
- **/
-gpointer
-camel_object_bag_reserve(CamelObjectBag *bag, gconstpointer key)
-{
- CamelObject *o;
-
- REF_LOCK();
-
- o = g_hash_table_lookup(bag->object_table, key);
- if (o) {
- o->ref_count++;
- } else {
- struct _CamelObjectBagKey *res = bag->reserved;
-
- while (res) {
- if (bag->equal_key(res->key, key))
- break;
- res = res->next;
- }
-
- if (res) {
- b(printf("bag reserve %s, already reserved, waiting\n", (gchar *)key));
- g_assert(!res->have_owner || res->owner != g_thread_self ());
- res->waiters++;
- g_cond_wait(res->cond, ref_lock);
- res->waiters--;
- /* incase its slipped in while we were waiting */
- o = g_hash_table_lookup(bag->object_table, key);
- if (o) {
- b(printf("finished wait, someone else created '%s' = %p\n", (gchar *)key, o));
- o->ref_count++;
- /* in which case we dont need to reserve the bag either */
- res->owner = g_thread_self ();
- res->have_owner = TRUE;
- co_bag_unreserve(bag, key);
- } else {
- b(printf("finished wait, now owner of '%s'\n", (gchar *)key));
- res->owner = g_thread_self ();
- res->have_owner = TRUE;
- }
- } else {
- b(printf("bag reserve %s, no key, reserving\n", (gchar *)key));
- res = g_malloc(sizeof(*res));
- res->waiters = 0;
- res->key = bag->copy_key(key);
- res->cond = g_cond_new();
- res->owner = g_thread_self ();
- res->have_owner = TRUE;
- res->next = bag->reserved;
- bag->reserved = res;
- }
- }
-
- REF_UNLOCK();
-
- return o;
-}
-
-/**
- * camel_object_bag_abort:
- * @bag:
- * @key:
- *
- * Abort a key reservation.
- **/
-void
-camel_object_bag_abort(CamelObjectBag *bag, gconstpointer key)
-{
- REF_LOCK();
-
- co_bag_unreserve(bag, key);
-
- REF_UNLOCK();
-}
-
-/**
- * camel_object_bag_rekey:
- * @bag:
- * @o:
- * @newkey:
- *
- * Re-key an object, atomically. The key for object @o is set to
- * @newkey, in an atomic manner.
- *
- * It is an api (fatal) error if @o is not currently in the bag.
- **/
-void
-camel_object_bag_rekey(CamelObjectBag *bag, gpointer o, gconstpointer newkey)
-{
- gpointer oldkey;
-
- REF_LOCK();
-
- if (g_hash_table_lookup_extended(bag->key_table, o, NULL, &oldkey)) {
- g_hash_table_remove(bag->object_table, oldkey);
- g_hash_table_remove(bag->key_table, o);
- bag->free_key(oldkey);
- oldkey = bag->copy_key(newkey);
- g_hash_table_insert(bag->object_table, oldkey, o);
- g_hash_table_insert(bag->key_table, o, oldkey);
- } else {
- abort();
- }
-
- REF_UNLOCK();
-}
-
-static void
-save_bag(gpointer key, CamelObject *o, GPtrArray *list)
-{
- /* we have the refcount lock already */
- o->ref_count++;
- g_ptr_array_add(list, o);
-}
-
-/* get a list of all objects in the bag, ref'd
- ignores any reserved keys */
-GPtrArray *
-camel_object_bag_list(CamelObjectBag *bag)
-{
- GPtrArray *list;
-
- list = g_ptr_array_new();
-
- REF_LOCK();
- g_hash_table_foreach(bag->object_table, (GHFunc)save_bag, list);
- REF_UNLOCK();
-
- return list;
-}
-
-/* if bag is NULL, remove all bags from object */
-static void
-camel_object_bag_remove_unlocked(CamelObjectBag *inbag, CamelObject *o, CamelHookList *hooks)
-{
- CamelHookPair *pair, *parent;
- gpointer oldkey;
- CamelObjectBag *bag;
-
- parent = (CamelHookPair *)&hooks->list;
- pair = parent->next;
- while (pair) {
- if (pair->name == bag_name
- && (inbag == NULL || inbag == pair->data)) {
- bag = pair->data;
- /* lookup object in table? */
- oldkey = g_hash_table_lookup(bag->key_table, o);
- if (oldkey) {
- g_hash_table_remove(bag->key_table, o);
- g_hash_table_remove(bag->object_table, oldkey);
- bag->free_key(oldkey);
- }
- parent->next = pair->next;
- pair_free(pair);
- hooks->list_length--;
- } else {
- parent = pair;
- }
- pair = parent->next;
- }
-}
-
-void
-camel_object_bag_remove(CamelObjectBag *inbag, gpointer vo)
-{
- CamelObject *o = vo;
- CamelHookList *hooks;
-
- if (o->hooks == NULL)
- return;
-
- hooks = camel_object_get_hooks(o);
- REF_LOCK();
-
- camel_object_bag_remove_unlocked(inbag, o, hooks);
-
- REF_UNLOCK();
- camel_object_unget_hooks(o);
+ CAMEL_OBJECT_GET_CLASS (vo)->free (vo, tag, value);
}
#ifndef CAMEL_OBJECT_H
#define CAMEL_OBJECT_H
-#include <glib.h>
+#include <glib-object.h>
#include <stdio.h> /* FILE */
#include <stdlib.h> /* gsize */
#include <stdarg.h>
#include <camel/camel-arg.h>
#include <camel/camel-exception.h>
-/* turn on so that camel_object_class_dump_tree() dumps object instances as well */
-#define CAMEL_OBJECT_TRACK_INSTANCES
+/* Standard GObject macros */
+#define CAMEL_TYPE_OBJECT \
+ (camel_object_get_type ())
+#define CAMEL_OBJECT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_OBJECT, CamelObject))
+#define CAMEL_OBJECT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_OBJECT, CamelObjectClass))
+#define CAMEL_IS_OBJECT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_OBJECT))
+#define CAMEL_IS_OBJECT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_OBJECT))
+#define CAMEL_OBJECT_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_OBJECT, CamelObjectClass))
G_BEGIN_DECLS
-typedef struct _CamelObjectClass *CamelType;
-
-#ifdef G_DISABLE_CHECKS
-#define CAMEL_CHECK_CAST(obj, ctype, ptype) ((ptype *) obj)
-#define CAMEL_CHECK_CLASS_CAST(klass, ctype, ptype) ((ptype *) klass)
-#else
-#define CAMEL_CHECK_CAST(obj, ctype, ptype) ((ptype *) camel_object_cast ((CamelObject *)(obj), (CamelType)(ctype)))
-#define CAMEL_CHECK_CLASS_CAST(klass, ctype, ptype) ((ptype *) camel_object_class_cast ((CamelObjectClass *)(klass), (CamelType)(ctype) ))
-#endif
-#define CAMEL_CHECK_TYPE(obj, ctype) (camel_object_is ((CamelObject *)(obj), (CamelType)(ctype) ))
-#define CAMEL_CHECK_CLASS_TYPE(klass, ctype) (camel_object_class_is ((CamelObjectClass *)(klass), (CamelType)(ctype)))
-
-extern CamelType camel_object_type;
-
-#define CAMEL_TYPE_OBJECT (camel_object_type)
-
-/* we can't check casts till we've got the type, use the global type variable because its cheaper */
-#define CAMEL_OBJECT(obj) (CAMEL_CHECK_CAST((obj), camel_object_type, CamelObject))
-#define CAMEL_OBJECT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), camel_object_type, CamelObjectClass))
-#define CAMEL_IS_OBJECT(o) (CAMEL_CHECK_TYPE((o), camel_object_type))
-#define CAMEL_IS_OBJECT_CLASS(k) (CAMEL_CHECK_CLASS_TYPE((k), camel_object_type))
-
-#define CAMEL_OBJECT_GET_CLASS(o) ((CamelObjectClass *)(CAMEL_OBJECT(o))->klass)
-#define CAMEL_OBJECT_GET_TYPE(o) ((CamelType)(CAMEL_OBJECT(o))->klass)
-
-typedef struct _CamelObjectClass CamelObjectClass;
typedef struct _CamelObject CamelObject;
+typedef struct _CamelObjectClass CamelObjectClass;
typedef guint CamelObjectHookID;
-typedef void (*CamelObjectClassInitFunc) (CamelObjectClass *);
-typedef void (*CamelObjectClassFinalizeFunc) (CamelObjectClass *);
-typedef void (*CamelObjectInitFunc) (CamelObject *, CamelObjectClass *);
-typedef void (*CamelObjectFinalizeFunc) (CamelObject *);
-
typedef gboolean (*CamelObjectEventPrepFunc) (CamelObject *, gpointer);
typedef void (*CamelObjectEventHookFunc) (CamelObject *, gpointer, gpointer);
-#define CAMEL_INVALID_TYPE (NULL)
-
/* camel object args. */
enum {
/* Get a description of the object. */
CAMEL_OBJECT_PERSISTENT_PROPERTIES = CAMEL_OBJECT_ARG_PERSISTENT_PROPERTIES
};
-typedef enum _CamelObjectFlags {
- CAMEL_OBJECT_DESTROY = (1<<0)
-} CamelObjectFlags;
-
-/* TODO: create a simpleobject which has no events on it, or an interface for events */
struct _CamelObject {
- struct _CamelObjectClass *klass;
-
- guint32 magic; /* only really needed for debugging ... */
+ GObject parent;
/* current hooks on this object */
struct _CamelHookList *hooks;
-
- guint32 ref_count:24;
- guint32 flags:8;
-
-#ifdef CAMEL_OBJECT_TRACK_INSTANCES
- struct _CamelObject *next, *prev;
-#endif
};
-struct _CamelObjectClass
-{
- struct _CamelObjectClass *parent;
-
- guint32 magic; /* in same spot for validation */
-
- struct _CamelObjectClass *next, *child; /* maintain heirarchy, just for kicks */
-
- const gchar *name;
-
- gpointer lock; /* lock when used in threading, else just pads struct */
-
- /*unsigned short version, revision;*/
-
- /* if the object's bigger than 64K, it could use redesigning */
- unsigned short object_size/*, object_data*/;
- unsigned short klass_size/*, klass_data*/;
+struct _CamelObjectClass {
+ GObjectClass parent_class;
/* available hooks for this class */
struct _CamelHookPair *hooks;
- /* memchunks for this type */
- struct _EMemChunk *instance_chunks;
-#ifdef CAMEL_OBJECT_TRACK_INSTANCES
- struct _CamelObject *instances;
-#endif
-
- /* init class */
- void (*klass_init)(struct _CamelObjectClass *);
- void (*klass_finalize)(struct _CamelObjectClass *);
-
- /* init/finalize object */
- void (*init)(struct _CamelObject *, struct _CamelObjectClass *);
- void (*finalize)(struct _CamelObject *);
-
- /* root-class fields follow, type system above */
-
/* get/set interface */
- gint (*setv)(struct _CamelObject *, CamelException *ex, CamelArgV *args);
- gint (*getv)(struct _CamelObject *, CamelException *ex, CamelArgGetV *args);
+ gint (*setv)(CamelObject *, CamelException *ex, CamelArgV *args);
+ gint (*getv)(CamelObject *, CamelException *ex, CamelArgGetV *args);
/* we only free 1 at a time, and only pointer types, obviously */
- void (*free)(struct _CamelObject *, guint32 tag, gpointer ptr);
+ void (*free)(CamelObject *, guint32 tag, gpointer ptr);
/* persistence stuff */
- gint (*state_read)(struct _CamelObject *, FILE *fp);
- gint (*state_write)(struct _CamelObject *, FILE *fp);
+ gint (*state_read)(CamelObject *, FILE *fp);
+ gint (*state_write)(CamelObject *, FILE *fp);
};
-/* The type system .... it's pretty simple..... */
-void camel_type_init (void);
-CamelType camel_type_register(CamelType parent, const gchar * name, /*guint ver, guint rev,*/
- gsize instance_size,
- gsize classfuncs_size,
- CamelObjectClassInitFunc class_init,
- CamelObjectClassFinalizeFunc class_finalize,
- CamelObjectInitFunc instance_init,
- CamelObjectFinalizeFunc instance_finalize);
-
-/* deprecated interface */
-#define camel_type_get_global_classfuncs(x) ((CamelObjectClass *)(x))
-
-/* object class methods (types == classes now) */
-const gchar *camel_type_to_name (CamelType type);
-CamelType camel_name_to_type (const gchar *name);
void camel_object_class_add_event (CamelObjectClass *klass, const gchar *name, CamelObjectEventPrepFunc prep);
-void camel_object_class_dump_tree (CamelType root);
-
-/* casting */
-CamelObject *camel_object_cast(CamelObject *obj, CamelType ctype);
-gboolean camel_object_is(CamelObject *obj, CamelType ctype);
-
-CamelObjectClass *camel_object_class_cast (CamelObjectClass *klass, CamelType ctype);
-gboolean camel_object_class_is (CamelObjectClass *klass, CamelType ctype);
-
-CamelType camel_object_get_type (void);
-
-CamelObject *camel_object_new (CamelType type);
-
-gpointer camel_object_ref (gpointer);
-void camel_object_unref (gpointer);
+GType camel_object_get_type (void);
/* hooks */
CamelObjectHookID camel_object_hook_event(gpointer obj, const gchar *name, CamelObjectEventHookFunc hook, gpointer data);
/* free a retrieved object. May be a noop for static data. */
void camel_object_free(gpointer vo, guint32 tag, gpointer value);
-/* for managing bags of weakly-ref'd 'child' objects */
-typedef struct _CamelObjectBag CamelObjectBag;
-typedef gpointer (*CamelCopyFunc)(gconstpointer vo);
-
-CamelObjectBag *camel_object_bag_new(GHashFunc hash, GEqualFunc equal, CamelCopyFunc keycopy, GFreeFunc keyfree);
-gpointer camel_object_bag_get(CamelObjectBag *bag, gconstpointer key);
-gpointer camel_object_bag_peek(CamelObjectBag *bag, gconstpointer key);
-gpointer camel_object_bag_reserve(CamelObjectBag *bag, gconstpointer key);
-void camel_object_bag_add(CamelObjectBag *bag, gconstpointer key, gpointer vo);
-void camel_object_bag_abort(CamelObjectBag *bag, gconstpointer key);
-void camel_object_bag_rekey(CamelObjectBag *bag, gpointer o, gconstpointer newkey);
-GPtrArray *camel_object_bag_list(CamelObjectBag *bag);
-void camel_object_bag_remove(CamelObjectBag *bag, gpointer o);
-void camel_object_bag_destroy(CamelObjectBag *bag);
-
G_END_DECLS
#endif /* CAMEL_OBJECT_H */
#include "camel-service.h"
#include "camel-session.h"
-static gpointer camel_offline_folder_parent_class;
-
static GSList *offline_folder_props = NULL;
static CamelProperty offline_prop_list[] = {
CamelFolderChangeInfo *changes;
};
+G_DEFINE_TYPE (CamelOfflineFolder, camel_offline_folder, CAMEL_TYPE_FOLDER)
+
static void
offline_downsync_sync (CamelSession *session, CamelSessionThreadMsg *mm)
{
camel_operation_progress (NULL, pc);
if ((message = camel_folder_get_message (m->folder, m->changes->uid_added->pdata[i], &mm->ex)))
- camel_object_unref (message);
+ g_object_unref (message);
}
} else {
camel_offline_folder_downsync ((CamelOfflineFolder *) m->folder, "(match-all)", &mm->ex);
if (m->changes)
camel_folder_change_info_free (m->changes);
- camel_object_unref (m->folder);
+ g_object_unref (m->folder);
}
static CamelSessionThreadOps offline_downsync_ops = {
m = camel_session_thread_msg_new (session, &offline_downsync_ops, sizeof (*m));
m->changes = camel_folder_change_info_new ();
camel_folder_change_info_cat (m->changes, changes);
- m->folder = camel_object_ref (folder);
+ m->folder = g_object_ref (folder);
camel_session_thread_queue (session, &m->msg, 0);
}
CamelObjectClass *camel_object_class;
gint ii;
- camel_offline_folder_parent_class = (CamelFolderClass *) camel_type_get_global_classfuncs (CAMEL_FOLDER_TYPE);
-
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = offline_folder_getv;
camel_object_class->setv = offline_folder_setv;
(CamelObjectEventHookFunc) offline_folder_changed, NULL);
}
-CamelType
-camel_offline_folder_get_type (void)
-{
- static CamelType type = NULL;
-
- if (!type) {
- type = camel_type_register (CAMEL_FOLDER_TYPE,
- "CamelOfflineFolder",
- sizeof (CamelOfflineFolder),
- sizeof (CamelOfflineFolderClass),
- (CamelObjectClassInitFunc) camel_offline_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_offline_folder_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
/**
* camel_offline_folder_downsync:
* @offline: a #CamelOfflineFolder object
#include <camel/camel-folder.h>
-#define CAMEL_OFFLINE_FOLDER_TYPE (camel_offline_folder_get_type ())
-#define CAMEL_OFFLINE_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_OFFLINE_FOLDER_TYPE, CamelOfflineFolder))
-#define CAMEL_OFFLINE_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_OFFLINE_FOLDER_TYPE, CamelOfflineFolderClass))
-#define CAMEL_IS_OFFLINE_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_OFFLINE_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_OFFLINE_FOLDER \
+ (camel_offline_folder_get_type ())
+#define CAMEL_OFFLINE_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_OFFLINE_FOLDER, CamelOfflineFolder))
+#define CAMEL_OFFLINE_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_OFFLINE_FOLDER, CamelOfflineFolderClass))
+#define CAMEL_IS_OFFLINE_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_OFFLINE_FOLDER))
+#define CAMEL_IS_OFFLINE_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_OFFLINE_FOLDER))
#define CAMEL_OFFLINE_FOLDER_GET_CLASS(obj) \
- ((CamelOfflineFolderClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_OFFLINE_FOLDER, CamelOfflineFolderClass))
G_BEGIN_DECLS
gboolean (* downsync) (CamelOfflineFolder *folder, const gchar *expression, CamelException *ex);
};
-CamelType camel_offline_folder_get_type (void);
+GType camel_offline_folder_get_type (void);
gboolean camel_offline_folder_downsync (CamelOfflineFolder *offline, const gchar *expression, CamelException *ex);
#define d(x)
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelOfflineJournal, camel_offline_journal, CAMEL_TYPE_OBJECT)
static void
-offline_journal_finalize (CamelOfflineJournal *journal)
+offline_journal_finalize (GObject *object)
{
+ CamelOfflineJournal *journal = CAMEL_OFFLINE_JOURNAL (object);
CamelDListNode *entry;
g_free (journal->filename);
while ((entry = camel_dlist_remhead (&journal->queue)))
CAMEL_OFFLINE_JOURNAL_GET_CLASS (journal)->entry_free (journal, entry);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_offline_journal_parent_class)->finalize (object);
}
static void
-camel_offline_journal_class_init (CamelOfflineJournalClass *klass)
+camel_offline_journal_class_init (CamelOfflineJournalClass *class)
{
- parent_class = camel_type_get_global_classfuncs (CAMEL_TYPE_OBJECT);
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = offline_journal_finalize;
}
static void
camel_dlist_init (&journal->queue);
}
-CamelType
-camel_offline_journal_get_type (void)
-{
- static CamelType type = NULL;
-
- if (!type) {
- type = camel_type_register (camel_object_get_type (),
- "CamelOfflineJournal",
- sizeof (CamelOfflineJournal),
- sizeof (CamelOfflineJournalClass),
- (CamelObjectClassInitFunc) camel_offline_journal_class_init,
- NULL,
- (CamelObjectInitFunc) camel_offline_journal_init,
- (CamelObjectFinalizeFunc) offline_journal_finalize);
- }
-
- return type;
-}
-
/**
* camel_offline_journal_construct:
* @journal: a #CamelOfflineJournal object
#include <camel/camel-list-utils.h>
#include <camel/camel-object.h>
-#define CAMEL_TYPE_OFFLINE_JOURNAL (camel_offline_journal_get_type ())
-#define CAMEL_OFFLINE_JOURNAL(obj) (CAMEL_CHECK_CAST ((obj), CAMEL_TYPE_OFFLINE_JOURNAL, CamelOfflineJournal))
-#define CAMEL_OFFLINE_JOURNAL_CLASS(klass) (CAMEL_CHECK_CLASS_CAST ((klass), CAMEL_TYPE_OFFLINE_JOURNAL, CamelOfflineJournalClass))
-#define CAMEL_IS_OFFLINE_JOURNAL(obj) (CAMEL_CHECK_TYPE ((obj), CAMEL_TYPE_OFFLINE_JOURNAL))
-#define CAMEL_IS_OFFLINE_JOURNAL_CLASS(klass) (CAMEL_CHECK_CLASS_TYPE ((klass), CAMEL_TYPE_OFFLINE_JOURNAL))
-#define CAMEL_OFFLINE_JOURNAL_GET_CLASS(o) (CAMEL_OFFLINE_JOURNAL_CLASS (CAMEL_OBJECT_GET_CLASS (o)))
+/* Standard GObject macros */
+#define CAMEL_TYPE_OFFLINE_JOURNAL \
+ (camel_offline_journal_get_type ())
+#define CAMEL_OFFLINE_JOURNAL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_OFFLINE_JOURNAL, CamelOfflineJournal))
+#define CAMEL_OFFLINE_JOURNAL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_OFFLINE_JOURNAL, CamelOfflineJournalClass))
+#define CAMEL_IS_OFFLINE_JOURNAL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_OFFLINE_JOURNAL))
+#define CAMEL_IS_OFFLINE_JOURNAL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_OFFLINE_JOURNAL))
+#define CAMEL_OFFLINE_JOURNAL_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_OFFLINE_JOURNAL, CamelOfflineJournalClass))
G_BEGIN_DECLS
gint (* entry_play) (CamelOfflineJournal *journal, CamelDListNode *entry, CamelException *ex);
};
-CamelType camel_offline_journal_get_type (void);
+GType camel_offline_journal_get_type (void);
void camel_offline_journal_construct (CamelOfflineJournal *journal, struct _CamelFolder *folder, const gchar *filename);
void camel_offline_journal_set_filename (CamelOfflineJournal *journal, const gchar *filename);
#include "camel-offline-store.h"
#include "camel-session.h"
-static gpointer camel_offline_store_parent_class;
+G_DEFINE_TYPE (CamelOfflineStore, camel_offline_store, CAMEL_TYPE_STORE)
static gboolean
offline_store_construct (CamelService *service,
{
CamelServiceClass *service_class;
- camel_offline_store_parent_class = (CamelStoreClass *) camel_type_get_global_classfuncs (CAMEL_STORE_TYPE);
-
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = offline_store_construct;
}
store->state = CAMEL_OFFLINE_STORE_NETWORK_AVAIL;
}
-CamelType
-camel_offline_store_get_type (void)
-{
- static CamelType type = NULL;
-
- if (!type) {
- type = camel_type_register (CAMEL_STORE_TYPE,
- "CamelOfflineStore",
- sizeof (CamelOfflineStore),
- sizeof (CamelOfflineStoreClass),
- (CamelObjectClassInitFunc) camel_offline_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_offline_store_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
/**
* camel_offline_store_get_network_state:
* @store: a #CamelOfflineStore object
for (i = 0; i < folders->len; i++) {
folder = folders->pdata[i];
- if (CAMEL_CHECK_TYPE (folder, CAMEL_OFFLINE_FOLDER_TYPE)
+ if (G_TYPE_CHECK_INSTANCE_TYPE (folder, CAMEL_TYPE_OFFLINE_FOLDER)
&& (sync || ((CamelOfflineFolder *) folder)->sync_offline)) {
camel_offline_folder_downsync ((CamelOfflineFolder *) folder, NULL, &lex);
camel_exception_clear (&lex);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
}
g_ptr_array_free (folders, TRUE);
for (i = 0; i < folders->len; i++) {
folder = folders->pdata[i];
- if (CAMEL_CHECK_TYPE (folder, CAMEL_OFFLINE_FOLDER_TYPE)
+ if (G_TYPE_CHECK_INSTANCE_TYPE (folder, CAMEL_TYPE_OFFLINE_FOLDER)
&& (sync || ((CamelOfflineFolder *) folder)->sync_offline)) {
camel_offline_folder_downsync ((CamelOfflineFolder *) folder, NULL, &lex);
camel_exception_clear (&lex);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
}
g_ptr_array_free (folders, TRUE);
}
#include <camel/camel-store.h>
-#define CAMEL_TYPE_OFFLINE_STORE (camel_offline_store_get_type ())
-#define CAMEL_OFFLINE_STORE(obj) (CAMEL_CHECK_CAST ((obj), CAMEL_TYPE_OFFLINE_STORE, CamelOfflineStore))
-#define CAMEL_OFFLINE_STORE_CLASS(klass) (CAMEL_CHECK_CLASS_CAST ((klass), CAMEL_TYPE_OFFLINE_STORE, CamelOfflineStoreClass))
-#define CAMEL_IS_OFFLINE_STORE(obj) (CAMEL_CHECK_TYPE ((obj), CAMEL_TYPE_OFFLINE_STORE))
-#define CAMEL_IS_OFFLINE_STORE_CLASS(klass) (CAMEL_CHECK_CLASS_TYPE ((klass), CAMEL_TYPE_OFFLINE_STORE))
-#define CAMEL_OFFLINE_STORE_GET_CLASS(obj) (CAMEL_CHECK_GET_CLASS ((obj), CAMEL_TYPE_OFFLINE_STORE, CamelOfflineStoreClass))
+/* Standard GObject macros */
+#define CAMEL_TYPE_OFFLINE_STORE \
+ (camel_offline_store_get_type ())
+#define CAMEL_OFFLINE_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_OFFLINE_STORE, CamelOfflineStore))
+#define CAMEL_OFFLINE_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_OFFLINE_STORE, CamelOfflineStoreClass))
+#define CAMEL_IS_OFFLINE_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_OFFLINE_STORE))
+#define CAMEL_IS_OFFLINE_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_OFFLINE_STORE))
+#define CAMEL_OFFLINE_STORE_GET_CLASS(obj) \
+ (CAMEL_CHECK_GET_CLASS \
+ ((obj), CAMEL_TYPE_OFFLINE_STORE, CamelOfflineStoreClass))
G_BEGIN_DECLS
gboolean (* set_network_state) (CamelOfflineStore *store, gint state, CamelException *ex);
};
-CamelType camel_offline_store_get_type (void);
+GType camel_offline_store_get_type (void);
gboolean camel_offline_store_set_network_state (CamelOfflineStore *store, gint state, CamelException *ex);
gint camel_offline_store_get_network_state (CamelOfflineStore *store, CamelException *ex);
tables consistent after program crash without sync */
/*#define SYNC_UPDATES*/
-#define d(x) /*(printf("%s(%d):%s: ", __FILE__, __LINE__, __PRETTY_FUNCTION__),(x))*/
+#define d(x) /*(printf ("%s (%d):%s: ", __FILE__, __LINE__, __PRETTY_FUNCTION__),(x))*/
/* key index debug */
-#define k(x) /*(printf("%s(%d):%s: ", __FILE__, __LINE__, __PRETTY_FUNCTION__),(x))*/
-
-struct _CamelPartitionTablePrivate {
- GStaticMutex lock; /* for locking partition */
-};
+#define k(x) /*(printf ("%s (%d):%s: ", __FILE__, __LINE__, __PRETTY_FUNCTION__),(x))*/
#define CAMEL_PARTITION_TABLE_LOCK(kf, lock) (g_static_mutex_lock(&(kf)->priv->lock))
#define CAMEL_PARTITION_TABLE_UNLOCK(kf, lock) (g_static_mutex_unlock(&(kf)->priv->lock))
-static void
-camel_partition_table_class_init(CamelPartitionTableClass *klass)
-{
-}
+#define CAMEL_PARTITION_TABLE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_PARTITION_TABLE, CamelPartitionTablePrivate))
-static void
-camel_partition_table_init(CamelPartitionTable *cpi)
-{
- struct _CamelPartitionTablePrivate *p;
-
- camel_dlist_init(&cpi->partition);
+struct _CamelPartitionTablePrivate {
+ GStaticMutex lock; /* for locking partition */
+};
- p = cpi->priv = g_malloc0(sizeof(*cpi->priv));
- g_static_mutex_init (&p->lock);
-}
+G_DEFINE_TYPE (CamelPartitionTable, camel_partition_table, CAMEL_TYPE_OBJECT)
static void
-camel_partition_table_finalize(CamelPartitionTable *cpi)
+partition_table_finalize (GObject *object)
{
+ CamelPartitionTable *table = CAMEL_PARTITION_TABLE (object);
CamelBlock *bl;
- struct _CamelPartitionTablePrivate *p;
-
- p = cpi->priv;
- if (cpi->blocks) {
- while ((bl = (CamelBlock *)camel_dlist_remhead(&cpi->partition))) {
- camel_block_file_sync_block(cpi->blocks, bl);
- camel_block_file_unref_block(cpi->blocks, bl);
+ if (table->blocks) {
+ while ((bl = (CamelBlock *)camel_dlist_remhead (&table->partition))) {
+ camel_block_file_sync_block (table->blocks, bl);
+ camel_block_file_unref_block (table->blocks, bl);
}
- camel_block_file_sync(cpi->blocks);
+ camel_block_file_sync (table->blocks);
- camel_object_unref (cpi->blocks);
+ g_object_unref (table->blocks);
}
- g_static_mutex_free (&p->lock);
+ g_static_mutex_free (&table->priv->lock);
- g_free(p);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_partition_table_parent_class)->finalize (object);
+}
+static void
+camel_partition_table_class_init (CamelPartitionTableClass *class)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelPartitionTablePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = partition_table_finalize;
}
-CamelType
-camel_partition_table_get_type(void)
+static void
+camel_partition_table_init (CamelPartitionTable *cpi)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelPartitionTable",
- sizeof (CamelPartitionTable),
- sizeof (CamelPartitionTableClass),
- (CamelObjectClassInitFunc) camel_partition_table_class_init,
- NULL,
- (CamelObjectInitFunc) camel_partition_table_init,
- (CamelObjectFinalizeFunc) camel_partition_table_finalize);
- }
+ cpi->priv = CAMEL_PARTITION_TABLE_GET_PRIVATE (cpi);
- return type;
+ camel_dlist_init (&cpi->partition);
+ g_static_mutex_init (&cpi->priv->lock);
}
/* ********************************************************************** */
/* ********************************************************************** */
/* This simple hash seems to work quite well */
-static camel_hash_t hash_key(const gchar *key)
+static camel_hash_t hash_key (const gchar *key)
{
camel_hash_t hash = 0xABADF00D;
}
/* Call with lock held */
-static CamelBlock *find_partition(CamelPartitionTable *cpi, camel_hash_t id, gint *indexp)
+static CamelBlock *find_partition (CamelPartitionTable *cpi, camel_hash_t id, gint *indexp)
{
gint index, jump;
CamelBlock *bl;
bl = bl->next;
}
- g_warning("could not find a partition that could fit !partition table corrupt!");
+ g_warning ("could not find a partition that could fit! partition table corrupt!");
/* This should never be reached */
return NULL;
}
-CamelPartitionTable *camel_partition_table_new(struct _CamelBlockFile *bs, camel_block_t root)
+CamelPartitionTable *
+camel_partition_table_new (struct _CamelBlockFile *bs,
+ camel_block_t root)
{
CamelPartitionTable *cpi;
CamelPartitionMapBlock *ptb;
CamelPartitionKeyBlock *kb;
CamelBlock *block, *pblock;
- cpi = (CamelPartitionTable *)camel_object_new(camel_partition_table_get_type());
+ cpi = g_object_new (CAMEL_TYPE_PARTITION_TABLE, NULL);
cpi->rootid = root;
- cpi->blocks = camel_object_ref (bs);
+ cpi->blocks = g_object_ref (bs);
/* read the partition table into memory */
do {
- block = camel_block_file_get_block(bs, root);
+ block = camel_block_file_get_block (bs, root);
if (block == NULL)
goto fail;
ptb = (CamelPartitionMapBlock *)&block->data;
- d(printf("Adding partition block, used = %d, hashid = %08x\n", ptb->used, ptb->partition[0].hashid));
+ d (printf ("Adding partition block, used = %d, hashid = %08x\n", ptb->used, ptb->partition[0].hashid));
/* if we have no data, prime initial block */
- if (ptb->used == 0 && camel_dlist_empty(&cpi->partition) && ptb->next == 0) {
- pblock = camel_block_file_new_block(bs);
+ if (ptb->used == 0 && camel_dlist_empty (&cpi->partition) && ptb->next == 0) {
+ pblock = camel_block_file_new_block (bs);
if (pblock == NULL) {
- camel_block_file_unref_block(bs, block);
+ camel_block_file_unref_block (bs, block);
goto fail;
}
kb = (CamelPartitionKeyBlock *)&pblock->data;
ptb->used = 1;
ptb->partition[0].hashid = 0xffffffff;
ptb->partition[0].blockid = pblock->id;
- camel_block_file_touch_block(bs, pblock);
- camel_block_file_unref_block(bs, pblock);
- camel_block_file_touch_block(bs, block);
+ camel_block_file_touch_block (bs, pblock);
+ camel_block_file_unref_block (bs, pblock);
+ camel_block_file_touch_block (bs, block);
#ifdef SYNC_UPDATES
- camel_block_file_sync_block(bs, block);
+ camel_block_file_sync_block (bs, block);
#endif
}
root = ptb->next;
- camel_block_file_detach_block(bs, block);
- camel_dlist_addtail(&cpi->partition, (CamelDListNode *)block);
+ camel_block_file_detach_block (bs, block);
+ camel_dlist_addtail (&cpi->partition, (CamelDListNode *)block);
} while (root);
return cpi;
fail:
- camel_object_unref (cpi);
+ g_object_unref (cpi);
return NULL;
}
/* sync our blocks, the caller must still sync the blockfile itself */
gint
-camel_partition_table_sync(CamelPartitionTable *cpi)
+camel_partition_table_sync (CamelPartitionTable *cpi)
{
CamelBlock *bl, *bn;
gint ret = 0;
- CAMEL_PARTITION_TABLE_LOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_LOCK (cpi, lock);
if (cpi->blocks) {
bl = (CamelBlock *)cpi->partition.head;
bn = bl->next;
while (bn) {
- ret = camel_block_file_sync_block(cpi->blocks, bl);
+ ret = camel_block_file_sync_block (cpi->blocks, bl);
if (ret == -1)
goto fail;
bl = bn;
}
}
fail:
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return ret;
}
-camel_key_t camel_partition_table_lookup(CamelPartitionTable *cpi, const gchar *key)
+camel_key_t
+camel_partition_table_lookup (CamelPartitionTable *cpi,
+ const gchar *key)
{
CamelPartitionKeyBlock *pkb;
CamelPartitionMapBlock *ptb;
camel_key_t keyid = 0;
gint index, i;
- hashid = hash_key(key);
+ hashid = hash_key (key);
- CAMEL_PARTITION_TABLE_LOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_LOCK (cpi, lock);
- ptblock = find_partition(cpi, hashid, &index);
+ ptblock = find_partition (cpi, hashid, &index);
if (ptblock == NULL) {
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return 0;
}
ptb = (CamelPartitionMapBlock *)&ptblock->data;
- block = camel_block_file_get_block(cpi->blocks, ptb->partition[index].blockid);
+ block = camel_block_file_get_block (
+ cpi->blocks, ptb->partition[index].blockid);
if (block == NULL) {
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return 0;
}
}
}
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
- camel_block_file_unref_block(cpi->blocks, block);
+ camel_block_file_unref_block (cpi->blocks, block);
return keyid;
}
camel_hash_t hashid;
gint index, i;
- hashid = hash_key(key);
+ hashid = hash_key (key);
- CAMEL_PARTITION_TABLE_LOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_LOCK (cpi, lock);
- ptblock = find_partition(cpi, hashid, &index);
+ ptblock = find_partition (cpi, hashid, &index);
if (ptblock == NULL) {
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return TRUE;
}
ptb = (CamelPartitionMapBlock *)&ptblock->data;
- block = camel_block_file_get_block(cpi->blocks, ptb->partition[index].blockid);
+ block = camel_block_file_get_block (
+ cpi->blocks, ptb->partition[index].blockid);
if (block == NULL) {
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return FALSE;
}
pkb = (CamelPartitionKeyBlock *)&block->data;
pkb->keys[i].keyid = pkb->keys[i+1].keyid;
pkb->keys[i].hashid = pkb->keys[i+1].hashid;
}
- camel_block_file_touch_block(cpi->blocks, block);
+ camel_block_file_touch_block (cpi->blocks, block);
break;
}
}
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
- camel_block_file_unref_block(cpi->blocks, block);
+ camel_block_file_unref_block (cpi->blocks, block);
return TRUE;
}
static gint
-keys_cmp(gconstpointer ap, gconstpointer bp)
+keys_cmp (gconstpointer ap, gconstpointer bp)
{
const CamelPartitionKey *a = ap;
const CamelPartitionKey *b = bp;
}
gint
-camel_partition_table_add(CamelPartitionTable *cpi, const gchar *key, camel_key_t keyid)
+camel_partition_table_add (CamelPartitionTable *cpi,
+ const gchar *key,
+ camel_key_t keyid)
{
camel_hash_t hashid, partid;
gint index, newindex = 0; /* initialisation of this and pkb/nkb is just to silence compiler */
hashid = hash_key(key);
- CAMEL_PARTITION_TABLE_LOCK(cpi, lock);
- ptblock = find_partition(cpi, hashid, &index);
+ CAMEL_PARTITION_TABLE_LOCK (cpi, lock);
+ ptblock = find_partition (cpi, hashid, &index);
if (ptblock == NULL) {
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return -1;
}
ptb = (CamelPartitionMapBlock *)&ptblock->data;
- block = camel_block_file_get_block(cpi->blocks, ptb->partition[index].blockid);
+ block = camel_block_file_get_block (
+ cpi->blocks, ptb->partition[index].blockid);
if (block == NULL) {
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return -1;
}
kb = (CamelPartitionKeyBlock *)&block->data;
/* TODO: Should look at next/previous partition table block as well ... */
if (index > 0) {
- pblock = camel_block_file_get_block(cpi->blocks, ptb->partition[index-1].blockid);
+ pblock = camel_block_file_get_block (
+ cpi->blocks, ptb->partition[index-1].blockid);
if (pblock == NULL)
goto fail;
pkb = (CamelPartitionKeyBlock *)&pblock->data;
}
if (index < (ptb->used-1)) {
- nblock = camel_block_file_get_block(cpi->blocks, ptb->partition[index+1].blockid);
+ nblock = camel_block_file_get_block (
+ cpi->blocks, ptb->partition[index+1].blockid);
if (nblock == NULL) {
if (pblock)
- camel_block_file_unref_block(cpi->blocks, pblock);
+ camel_block_file_unref_block (cpi->blocks, pblock);
goto fail;
}
nkb = (CamelPartitionKeyBlock *)&nblock->data;
ptnblock = camel_block_file_new_block(cpi->blocks);
if (ptnblock == NULL) {
if (nblock)
- camel_block_file_unref_block(cpi->blocks, nblock);
+ camel_block_file_unref_block (cpi->blocks, nblock);
if (pblock)
- camel_block_file_unref_block(cpi->blocks, pblock);
+ camel_block_file_unref_block (cpi->blocks, pblock);
goto fail;
}
- camel_block_file_detach_block(cpi->blocks, ptnblock);
+ camel_block_file_detach_block (cpi->blocks, ptnblock);
/* split block and link on-disk, always sorted */
ptn = (CamelPartitionMapBlock *)&ptnblock->data;
len = ptb->used / 2;
ptn->used = ptb->used - len;
ptb->used = len;
- memcpy(ptn->partition, &ptb->partition[len], ptn->used * sizeof(ptb->partition[0]));
+ memcpy (ptn->partition, &ptb->partition[len], ptn->used * sizeof (ptb->partition[0]));
/* link in-memory */
ptnblock->next = ptblock->next;
ptnblock->prev = ptblock;
/* write in right order to ensure structure */
- camel_block_file_touch_block(cpi->blocks, ptnblock);
+ camel_block_file_touch_block (cpi->blocks, ptnblock);
#ifdef SYNC_UPDATES
- camel_block_file_sync_block(cpi->blocks, ptnblock);
+ camel_block_file_sync_block (cpi->blocks, ptnblock);
#endif
if (index > len) {
- camel_block_file_touch_block(cpi->blocks, ptblock);
+ camel_block_file_touch_block (cpi->blocks, ptblock);
#ifdef SYNC_UPDATES
- camel_block_file_sync_block(cpi->blocks, ptblock);
+ camel_block_file_sync_block (cpi->blocks, ptblock);
#endif
index -= len;
ptb = ptn;
}
/* try get newblock before modifying existing */
- newblock = camel_block_file_new_block(cpi->blocks);
+ newblock = camel_block_file_new_block (cpi->blocks);
if (newblock == NULL) {
if (nblock)
- camel_block_file_unref_block(cpi->blocks, nblock);
+ camel_block_file_unref_block (cpi->blocks, nblock);
if (pblock)
- camel_block_file_unref_block(cpi->blocks, pblock);
+ camel_block_file_unref_block (cpi->blocks, pblock);
goto fail;
}
ptb->partition[newindex].blockid = newblock->id;
if (nblock)
- camel_block_file_unref_block(cpi->blocks, nblock);
+ camel_block_file_unref_block (cpi->blocks, nblock);
if (pblock)
- camel_block_file_unref_block(cpi->blocks, pblock);
+ camel_block_file_unref_block (cpi->blocks, pblock);
} else {
newkb = (CamelPartitionKeyBlock *)&newblock->data;
if (newblock == pblock) {
if (nblock)
- camel_block_file_unref_block(cpi->blocks, nblock);
+ camel_block_file_unref_block (cpi->blocks, nblock);
} else {
if (pblock)
- camel_block_file_unref_block(cpi->blocks, pblock);
+ camel_block_file_unref_block (cpi->blocks, pblock);
}
}
/* sort keys to find midpoint */
len = kb->used;
- memcpy(keys, kb->keys, sizeof(kb->keys[0])*len);
- memcpy(keys+len, newkb->keys, sizeof(newkb->keys[0])*newkb->used);
+ memcpy (keys, kb->keys, sizeof (kb->keys[0])*len);
+ memcpy (keys+len, newkb->keys, sizeof (newkb->keys[0])*newkb->used);
len += newkb->used;
keys[len].hashid = hashid;
keys[len].keyid = keyid;
len++;
- qsort(keys, len, sizeof(keys[0]), keys_cmp);
+ qsort (keys, len, sizeof (keys[0]), keys_cmp);
/* Split keys, fix partition table */
half = len/2;
partid = keys[half-1].hashid;
if (index < newindex) {
- memcpy(kb->keys, keys, sizeof(keys[0])*half);
+ memcpy (kb->keys, keys, sizeof (keys[0])*half);
kb->used = half;
- memcpy(newkb->keys, keys+half, sizeof(keys[0])*(len-half));
+ memcpy (newkb->keys, keys+half, sizeof (keys[0])*(len-half));
newkb->used = len-half;
ptb->partition[index].hashid = partid;
} else {
- memcpy(newkb->keys, keys, sizeof(keys[0])*half);
+ memcpy (newkb->keys, keys, sizeof (keys[0])*half);
newkb->used = half;
- memcpy(kb->keys, keys+half, sizeof(keys[0])*(len-half));
+ memcpy (kb->keys, keys+half, sizeof (keys[0])*(len-half));
kb->used = len-half;
ptb->partition[newindex].hashid = partid;
}
- camel_block_file_touch_block(cpi->blocks, ptblock);
+ camel_block_file_touch_block (cpi->blocks, ptblock);
#ifdef SYNC_UPDATES
- camel_block_file_sync_block(cpi->blocks, ptblock);
+ camel_block_file_sync_block (cpi->blocks, ptblock);
#endif
- camel_block_file_touch_block(cpi->blocks, newblock);
- camel_block_file_unref_block(cpi->blocks, newblock);
+ camel_block_file_touch_block (cpi->blocks, newblock);
+ camel_block_file_unref_block (cpi->blocks, newblock);
}
- camel_block_file_touch_block(cpi->blocks, block);
- camel_block_file_unref_block(cpi->blocks, block);
+ camel_block_file_touch_block (cpi->blocks, block);
+ camel_block_file_unref_block (cpi->blocks, block);
ret = 0;
fail:
- CAMEL_PARTITION_TABLE_UNLOCK(cpi, lock);
+ CAMEL_PARTITION_TABLE_UNLOCK (cpi, lock);
return ret;
}
/* ********************************************************************** */
+#define CAMEL_KEY_TABLE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_KEY_TABLE, CamelKeyTablePrivate))
+
+#define CAMEL_KEY_TABLE_LOCK(kf, lock) (g_static_mutex_lock(&(kf)->priv->lock))
+#define CAMEL_KEY_TABLE_UNLOCK(kf, lock) (g_static_mutex_unlock(&(kf)->priv->lock))
+
struct _CamelKeyTablePrivate {
GStaticMutex lock; /* for locking key */
};
-#define CAMEL_KEY_TABLE_LOCK(kf, lock) (g_static_mutex_lock(&(kf)->priv->lock))
-#define CAMEL_KEY_TABLE_UNLOCK(kf, lock) (g_static_mutex_unlock(&(kf)->priv->lock))
+G_DEFINE_TYPE (CamelKeyTable, camel_key_table, CAMEL_TYPE_OBJECT)
static void
-camel_key_table_class_init(CamelKeyTableClass *klass)
+key_table_finalize (GObject *object)
{
-}
+ CamelKeyTable *table = CAMEL_KEY_TABLE (object);
-static void
-camel_key_table_init(CamelKeyTable *ki)
-{
- struct _CamelKeyTablePrivate *p;
+ if (table->blocks) {
+ if (table->root_block) {
+ camel_block_file_sync_block (table->blocks, table->root_block);
+ camel_block_file_unref_block (table->blocks, table->root_block);
+ }
+ camel_block_file_sync (table->blocks);
+ g_object_unref (table->blocks);
+ }
- p = ki->priv = g_malloc0(sizeof(*ki->priv));
- g_static_mutex_init (&p->lock);
+ g_static_mutex_free (&table->priv->lock);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_key_table_parent_class)->finalize (object);
}
static void
-camel_key_table_finalize(CamelKeyTable *ki)
+camel_key_table_class_init (CamelKeyTableClass *class)
{
- struct _CamelKeyTablePrivate *p;
-
- p = ki->priv;
-
- if (ki->blocks) {
- if (ki->root_block) {
- camel_block_file_sync_block(ki->blocks, ki->root_block);
- camel_block_file_unref_block(ki->blocks, ki->root_block);
- }
- camel_block_file_sync(ki->blocks);
- camel_object_unref (ki->blocks);
- }
+ GObjectClass *object_class;
- g_static_mutex_free (&p->lock);
-
- g_free(p);
+ g_type_class_add_private (class, sizeof (CamelKeyTablePrivate));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = key_table_finalize;
}
-CamelType
-camel_key_table_get_type(void)
+static void
+camel_key_table_init (CamelKeyTable *table)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_object_get_type(), "CamelKeyTable",
- sizeof (CamelKeyTable),
- sizeof (CamelKeyTableClass),
- (CamelObjectClassInitFunc) camel_key_table_class_init,
- NULL,
- (CamelObjectInitFunc) camel_key_table_init,
- (CamelObjectFinalizeFunc) camel_key_table_finalize);
- }
-
- return type;
+ table->priv = CAMEL_KEY_TABLE_GET_PRIVATE (table);
+ g_static_mutex_init (&table->priv->lock);
}
CamelKeyTable *
-camel_key_table_new(CamelBlockFile *bs, camel_block_t root)
+camel_key_table_new (CamelBlockFile *bs,
+ camel_block_t root)
{
CamelKeyTable *ki;
- ki = (CamelKeyTable *)camel_object_new(camel_key_table_get_type());
+ ki = g_object_new (CAMEL_TYPE_KEY_TABLE, NULL);
- ki->blocks = camel_object_ref (bs);
+ ki->blocks = g_object_ref (bs);
ki->rootid = root;
- ki->root_block = camel_block_file_get_block(bs, ki->rootid);
+ ki->root_block = camel_block_file_get_block (bs, ki->rootid);
if (ki->root_block == NULL) {
- camel_object_unref (ki);
+ g_object_unref (ki);
ki = NULL;
} else {
- camel_block_file_detach_block(bs, ki->root_block);
+ camel_block_file_detach_block (bs, ki->root_block);
ki->root = (CamelKeyRootBlock *)&ki->root_block->data;
- k(printf("Opening key index\n"));
- k(printf(" first %u\n last %u\n free %u\n", ki->root->first, ki->root->last, ki->root->free));
+ k (printf ("Opening key index\n"));
+ k (printf (" first %u\n last %u\n free %u\n", ki->root->first, ki->root->last, ki->root->free));
}
return ki;
}
gint
-camel_key_table_sync(CamelKeyTable *ki)
+camel_key_table_sync (CamelKeyTable *ki)
{
#ifdef SYNC_UPDATES
return 0;
#else
- return camel_block_file_sync_block(ki->blocks, ki->root_block);
+ return camel_block_file_sync_block (ki->blocks, ki->root_block);
#endif
}
camel_key_t
-camel_key_table_add(CamelKeyTable *ki, const gchar *key, camel_block_t data, guint flags)
+camel_key_table_add (CamelKeyTable *ki,
+ const gchar *key,
+ camel_block_t data,
+ guint flags)
{
CamelBlock *last, *next;
CamelKeyBlock *kblast, *kbnext;
camel_key_t keyid = 0;
/* Maximum key size = 128 chars */
- len = strlen(key);
+ len = strlen (key);
if (len > CAMEL_KEY_TABLE_MAX_KEY)
len = 128;
- CAMEL_KEY_TABLE_LOCK(ki, lock);
+ CAMEL_KEY_TABLE_LOCK (ki, lock);
if (ki->root->last == 0) {
- last = camel_block_file_new_block(ki->blocks);
+ last = camel_block_file_new_block (ki->blocks);
if (last == NULL)
goto fail;
ki->root->last = ki->root->first = last->id;
- camel_block_file_touch_block(ki->blocks, ki->root_block);
- k(printf("adding first block, first = %u\n", ki->root->first));
+ camel_block_file_touch_block (ki->blocks, ki->root_block);
+ k (printf ("adding first block, first = %u\n", ki->root->first));
} else {
- last = camel_block_file_get_block(ki->blocks, ki->root->last);
+ last = camel_block_file_get_block (
+ ki->blocks, ki->root->last);
if (last == NULL)
goto fail;
}
if (kblast->used > 0) {
/*left = &kblast->u.keydata[kblast->u.keys[kblast->used-1].offset] - (gchar *)(&kblast->u.keys[kblast->used+1]);*/
- left = kblast->u.keys[kblast->used-1].offset - sizeof(kblast->u.keys[0])*(kblast->used+1);
- d(printf("key '%s' used = %d (%d), filled = %d, left = %d len = %d?\n",
- key, kblast->used, kblast->used * sizeof(kblast->u.keys[0]),
- sizeof(kblast->u.keydata) - kblast->u.keys[kblast->used-1].offset,
+ left = kblast->u.keys[kblast->used-1].offset - sizeof (kblast->u.keys[0])*(kblast->used+1);
+ d (printf ("key '%s' used = %d (%d), filled = %d, left = %d len = %d?\n",
+ key, kblast->used, kblast->used * sizeof (kblast->u.keys[0]),
+ sizeof (kblast->u.keydata) - kblast->u.keys[kblast->used-1].offset,
left, len));
if (left < len) {
- next = camel_block_file_new_block(ki->blocks);
+ next = camel_block_file_new_block (ki->blocks);
if (next == NULL) {
- camel_block_file_unref_block(ki->blocks, last);
+ camel_block_file_unref_block (ki->blocks, last);
goto fail;
}
kbnext = (CamelKeyBlock *)&next->data;
kblast->next = next->id;
ki->root->last = next->id;
- d(printf("adding new block, first = %u, last = %u\n", ki->root->first, ki->root->last));
- camel_block_file_touch_block(ki->blocks, ki->root_block);
- camel_block_file_touch_block(ki->blocks, last);
- camel_block_file_unref_block(ki->blocks, last);
+ d (printf ("adding new block, first = %u, last = %u\n", ki->root->first, ki->root->last));
+ camel_block_file_touch_block (ki->blocks, ki->root_block);
+ camel_block_file_touch_block (ki->blocks, last);
+ camel_block_file_unref_block (ki->blocks, last);
kblast = kbnext;
last = next;
}
if (kblast->used > 0)
offset = kblast->u.keys[kblast->used-1].offset - len;
else
- offset = sizeof(kblast->u.keydata)-len;
+ offset = sizeof (kblast->u.keydata)-len;
kblast->u.keys[kblast->used].flags = flags;
kblast->u.keys[kblast->used].data = data;
kblast->u.keys[kblast->used].offset = offset;
- memcpy(kblast->u.keydata + offset, key, len);
+ memcpy (kblast->u.keydata + offset, key, len);
keyid = (last->id & (~(CAMEL_BLOCK_SIZE-1))) | kblast->used;
kblast->used++;
#if 0
- g_assert(kblast->used < 127);
+ g_assert (kblast->used < 127);
#else
if (kblast->used >=127) {
- g_warning("Invalid value for used %d\n", kblast->used);
+ g_warning ("Invalid value for used %d\n", kblast->used);
return 0;
}
#endif
- camel_block_file_touch_block(ki->blocks, last);
- camel_block_file_unref_block(ki->blocks, last);
+ camel_block_file_touch_block (ki->blocks, last);
+ camel_block_file_unref_block (ki->blocks, last);
#ifdef SYNC_UPDATES
- camel_block_file_sync_block(ki->blocks, ki->root_block);
+ camel_block_file_sync_block (ki->blocks, ki->root_block);
#endif
fail:
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
return keyid;
}
blockid = keyid & (~(CAMEL_BLOCK_SIZE-1));
index = keyid & (CAMEL_BLOCK_SIZE-1);
- bl = camel_block_file_get_block(ki->blocks, blockid);
+ bl = camel_block_file_get_block (ki->blocks, blockid);
if (bl == NULL)
return FALSE;
kb = (CamelKeyBlock *)&bl->data;
- CAMEL_KEY_TABLE_LOCK(ki, lock);
+ CAMEL_KEY_TABLE_LOCK (ki, lock);
if (kb->u.keys[index].data != data) {
kb->u.keys[index].data = data;
- camel_block_file_touch_block(ki->blocks, bl);
+ camel_block_file_touch_block (ki->blocks, bl);
}
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
- camel_block_file_unref_block(ki->blocks, bl);
+ camel_block_file_unref_block (ki->blocks, bl);
return TRUE;
}
blockid = keyid & (~(CAMEL_BLOCK_SIZE-1));
index = keyid & (CAMEL_BLOCK_SIZE-1);
- bl = camel_block_file_get_block(ki->blocks, blockid);
+ bl = camel_block_file_get_block (ki->blocks, blockid);
if (bl == NULL)
return FALSE;
kb = (CamelKeyBlock *)&bl->data;
-#if 0
- g_assert(kb->used < 127); /* this should be more accurate */
- g_assert(index < kb->used);
-#else
if (kb->used >=127 || index >= kb->used) {
g_warning("Block %x: Invalid index or content: index %d used %d\n", blockid, index, kb->used);
return FALSE;
}
-#endif
- CAMEL_KEY_TABLE_LOCK(ki, lock);
+ CAMEL_KEY_TABLE_LOCK (ki, lock);
old = kb->u.keys[index].flags;
if ((old & set) != (flags & set)) {
kb->u.keys[index].flags = (old & (~set)) | (flags & set);
- camel_block_file_touch_block(ki->blocks, bl);
+ camel_block_file_touch_block (ki->blocks, bl);
}
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
- camel_block_file_unref_block(ki->blocks, bl);
+ camel_block_file_unref_block (ki->blocks, bl);
return TRUE;
}
camel_block_t
-camel_key_table_lookup(CamelKeyTable *ki, camel_key_t keyid, gchar **keyp, guint *flags)
+camel_key_table_lookup (CamelKeyTable *ki,
+ camel_key_t keyid,
+ gchar **keyp,
+ guint *flags)
{
CamelBlock *bl;
camel_block_t blockid;
gchar *key;
CamelKeyBlock *kb;
+ g_return_val_if_fail (keyid != 0, 0);
+
if (keyp)
*keyp = NULL;
if (flags)
*flags = 0;
- if (keyid == 0)
- return 0;
blockid = keyid & (~(CAMEL_BLOCK_SIZE-1));
index = keyid & (CAMEL_BLOCK_SIZE-1);
kb = (CamelKeyBlock *)&bl->data;
-#if 0
- g_assert(kb->used < 127); /* this should be more accurate */
- g_assert(index < kb->used);
-#else
if (kb->used >=127 || index >= kb->used) {
g_warning("Block %x: Invalid index or content: index %d used %d\n", blockid, index, kb->used);
return 0;
}
-#endif
- CAMEL_KEY_TABLE_LOCK(ki, lock);
+ CAMEL_KEY_TABLE_LOCK (ki, lock);
blockid = kb->u.keys[index].data;
if (flags)
if (keyp) {
off = kb->u.keys[index].offset;
if (index == 0)
- len = sizeof(kb->u.keydata) - off;
+ len = sizeof (kb->u.keydata) - off;
else
len = kb->u.keys[index-1].offset - off;
- *keyp = key = g_malloc(len+1);
- memcpy(key, kb->u.keydata + off, len);
+ *keyp = key = g_malloc (len+1);
+ memcpy (key, kb->u.keydata + off, len);
key[len] = 0;
}
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
- camel_block_file_unref_block(ki->blocks, bl);
+ camel_block_file_unref_block (ki->blocks, bl);
return blockid;
}
if (datap)
*datap = 0;
- CAMEL_KEY_TABLE_LOCK(ki, lock);
+ CAMEL_KEY_TABLE_LOCK (ki, lock);
if (next == 0) {
next = ki->root->first;
if (next == 0) {
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
return 0;
}
} else
blockid = next & (~(CAMEL_BLOCK_SIZE-1));
index = next & (CAMEL_BLOCK_SIZE-1);
- bl = camel_block_file_get_block(ki->blocks, blockid);
+ bl = camel_block_file_get_block (ki->blocks, blockid);
if (bl == NULL) {
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
return 0;
}
if (index >= kb->used) {
/* FIXME: check for loops */
next = kb->next;
- camel_block_file_unref_block(ki->blocks, bl);
+ camel_block_file_unref_block (ki->blocks, bl);
bl = NULL;
}
} while (bl == NULL);
/* invalid block data */
- if ((kb->u.keys[index].offset >= sizeof(kb->u.keydata)
+ if ((kb->u.keys[index].offset >= sizeof (kb->u.keydata)
/*|| kb->u.keys[index].offset < kb->u.keydata - (gchar *)&kb->u.keys[kb->used])*/
- || kb->u.keys[index].offset < sizeof(kb->u.keys[0]) * kb->used
+ || kb->u.keys[index].offset < sizeof (kb->u.keys[0]) * kb->used
|| (index > 0 &&
- (kb->u.keys[index-1].offset >= sizeof(kb->u.keydata)
+ (kb->u.keys[index-1].offset >= sizeof (kb->u.keydata)
/*|| kb->u.keys[index-1].offset < kb->u.keydata - (gchar *)&kb->u.keys[kb->used]))) {*/
- || kb->u.keys[index-1].offset < sizeof(kb->u.keys[0]) * kb->used)))) {
- g_warning("Block %u invalid scanning keys", bl->id);
- camel_block_file_unref_block(ki->blocks, bl);
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ || kb->u.keys[index-1].offset < sizeof (kb->u.keys[0]) * kb->used)))) {
+ g_warning ("Block %u invalid scanning keys", bl->id);
+ camel_block_file_unref_block (ki->blocks, bl);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
return 0;
}
gchar *key;
if (index == 0)
- len = sizeof(kb->u.keydata) - off;
+ len = sizeof (kb->u.keydata) - off;
else
len = kb->u.keys[index-1].offset - off;
- *keyp = key = g_malloc(len+1);
- memcpy(key, kb->u.keydata + off, len);
+ *keyp = key = g_malloc (len+1);
+ memcpy (key, kb->u.keydata + off, len);
key[len] = 0;
}
- CAMEL_KEY_TABLE_UNLOCK(ki, lock);
+ CAMEL_KEY_TABLE_UNLOCK (ki, lock);
- camel_block_file_unref_block(ki->blocks, bl);
+ camel_block_file_unref_block (ki->blocks, bl);
return next;
}
#include "camel-block-file.h"
#include "camel-list-utils.h"
+/* Standard GObject macros */
+#define CAMEL_TYPE_PARTITION_TABLE \
+ (camel_partition_table_get_type ())
+#define CAMEL_PARTITION_TABLE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_PARTITION_TABLE, CamelPartitionTable))
+#define CAMEL_PARTITION_TABLE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_PARTITION_TABLE, CamelPartitionTableClass))
+#define CAMEL_IS_PARTITION_TABLE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_PARTITION_TABLE))
+#define CAMEL_IS_PARTITION_TABLE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_PARTITION_TABLE))
+#define CAMEL_PARTITION_TABLE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_PARTITION_TABLE, CamelPartitionTableClass))
+
+#define CAMEL_TYPE_KEY_TABLE \
+ (camel_key_table_get_type ())
+#define CAMEL_KEY_TABLE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_KEY_TABLE, CamelKeyTable))
+#define CAMEL_KEY_TABLE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_KEY_TABLE, CamelKeyTableClass))
+#define CAMEL_IS_KEY_TABLE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_KEY_TABLE))
+#define CAMEL_IS_KEY_TABLE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_KEY_TABLE))
+#define CAMEL_KEY_TABLE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_KEY_TABLE, CamelKeyTableClass))
+
G_BEGIN_DECLS
/* ********************************************************************** */
CamelObjectClass parent;
};
-CamelType camel_partition_table_get_type (void);
+GType camel_partition_table_get_type (void);
CamelPartitionTable *
camel_partition_table_new (struct _CamelBlockFile *bs,
camel_block_t root);
CamelObjectClass parent;
};
-CamelType camel_key_table_get_type (void);
+GType camel_key_table_get_type (void);
CamelKeyTable * camel_key_table_new (CamelBlockFile *bs,
camel_block_t root);
gint camel_key_table_sync (CamelKeyTable *ki);
#ifndef CAMEL_PROVIDER_H
#define CAMEL_PROVIDER_H
-#include <camel/camel-object.h>
#include <camel/camel-exception.h>
+#include <camel/camel-object.h>
+#include <camel/camel-object-bag.h>
#include <camel/camel-url.h>
#define CAMEL_PROVIDER(obj) ((CamelProvider *)(obj))
/* auto-detection function */
CamelProviderAutoDetectFunc auto_detect;
- /* CamelType(s) of its store and/or transport. If both are
+ /* GType(s) of its store and/or transport. If both are
* set, then they are assumed to be linked together and the
* transport type can only be used in an account that also
* uses the store type (eg, Exchange or NNTP).
*/
- CamelType object_types[CAMEL_NUM_PROVIDER_TYPES];
+ GType object_types[CAMEL_NUM_PROVIDER_TYPES];
/* GList of CamelServiceAuthTypes the provider supports */
GList *authtypes;
FALSE
};
-static CamelSaslClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSaslAnonymous, camel_sasl_anonymous, CAMEL_TYPE_SASL)
static void
-sasl_anonymous_finalize (CamelObject *object)
+sasl_anonymous_finalize (GObject *object)
{
CamelSaslAnonymous *sasl = CAMEL_SASL_ANONYMOUS (object);
g_free (sasl->trace_info);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_sasl_anonymous_parent_class)->finalize (object);
}
static GByteArray *
ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
_("Invalid email address trace information:\n%s"),
sasl_anon->trace_info);
- camel_object_unref (cia);
+ g_object_unref (cia);
return NULL;
}
- camel_object_unref (cia);
+ g_object_unref (cia);
ret = g_byte_array_new ();
g_byte_array_append (ret, (guint8 *) sasl_anon->trace_info, strlen (sasl_anon->trace_info));
break;
static void
camel_sasl_anonymous_class_init (CamelSaslAnonymousClass *class)
{
+ GObjectClass *object_class;
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = sasl_anonymous_finalize;
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_anonymous_challenge;
}
-CamelType
-camel_sasl_anonymous_get_type (void)
+static void
+camel_sasl_anonymous_init (CamelSaslAnonymous *sasl_anonymous)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslAnonymous",
- sizeof (CamelSaslAnonymous),
- sizeof (CamelSaslAnonymousClass),
- (CamelObjectClassInitFunc) camel_sasl_anonymous_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) sasl_anonymous_finalize);
- }
-
- return type;
}
/**
if (!trace_info && type != CAMEL_SASL_ANON_TRACE_EMPTY)
return NULL;
- sasl_anon = CAMEL_SASL_ANONYMOUS (camel_object_new (camel_sasl_anonymous_get_type ()));
+ sasl_anon = g_object_new (CAMEL_TYPE_SASL_ANONYMOUS, NULL);
sasl_anon->trace_info = g_strdup (trace_info);
sasl_anon->type = type;
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_ANONYMOUS_TYPE (camel_sasl_anonymous_get_type ())
-#define CAMEL_SASL_ANONYMOUS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_ANONYMOUS_TYPE, CamelSaslAnonymous))
-#define CAMEL_SASL_ANONYMOUS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_ANONYMOUS_TYPE, CamelSaslAnonymousClass))
-#define CAMEL_IS_SASL_ANONYMOUS(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_ANONYMOUS_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_ANONYMOUS \
+ (camel_sasl_anonymous_get_type ())
+#define CAMEL_SASL_ANONYMOUS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_ANONYMOUS, CamelSaslAnonymous))
+#define CAMEL_SASL_ANONYMOUS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_ANONYMOUS, CamelSaslAnonymousClass))
+#define CAMEL_IS_SASL_ANONYMOUS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_ANONYMOUS))
+#define CAMEL_IS_SASL_ANONYMOUS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_ANONYMOUS))
+#define CAMEL_SASL_ANONYMOUS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_ANONYMOUS, CamelSaslAnonymousClass))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_anonymous_get_type (void);
+GType camel_sasl_anonymous_get_type (void);
/* public methods */
CamelSasl *camel_sasl_anonymous_new (CamelSaslAnonTraceType type, const gchar *trace_info);
#include "camel-sasl-cram-md5.h"
#include "camel-service.h"
+#define CAMEL_SASL_CRAM_MD5_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_CRAM_MD5, CamelSaslCramMd5Private))
+
struct _CamelSaslCramMd5Private {
gint placeholder; /* allow for future expansion */
};
TRUE
};
-static CamelSaslClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSaslCramMd5, camel_sasl_cram_md5, CAMEL_TYPE_SASL)
/* CRAM-MD5 algorithm:
* MD5 ((passwd XOR opad), MD5 ((passwd XOR ipad), timestamp))
{
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslCramMd5Private));
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_cram_md5_challenge;
}
-CamelType
-camel_sasl_cram_md5_get_type (void)
+static void
+camel_sasl_cram_md5_init (CamelSaslCramMd5 *sasl)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslCramMd5",
- sizeof (CamelSaslCramMd5),
- sizeof (CamelSaslCramMd5Class),
- (CamelObjectClassInitFunc) camel_sasl_cram_md5_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
+ sasl->priv = CAMEL_SASL_CRAM_MD5_GET_PRIVATE (sasl);
}
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_CRAM_MD5_TYPE (camel_sasl_cram_md5_get_type ())
-#define CAMEL_SASL_CRAM_MD5(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_CRAM_MD5_TYPE, CamelSaslCramMd5))
-#define CAMEL_SASL_CRAM_MD5_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_CRAM_MD5_TYPE, CamelSaslCramMd5Class))
-#define CAMEL_IS_SASL_CRAM_MD5(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_CRAM_MD5_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_CRAM_MD5 \
+ (camel_sasl_cram_md5_get_type ())
+#define CAMEL_SASL_CRAM_MD5(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_CRAM_MD5, CamelSaslCramMd5))
+#define CAMEL_SASL_CRAM_MD5_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_CRAM_MD5, CamelSaslCramMd5Class))
+#define CAMEL_IS_SASL_CRAM_MD5(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_CRAM_MD5))
+#define CAMEL_IS_SASL_CRAM_MD5_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_CRAM_MD5))
+#define CAMEL_SASL_CRAM_MD5_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_CRAM_MD5, CamelSaslCramMd5Class))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_cram_md5_get_type (void);
+GType camel_sasl_cram_md5_get_type (void);
extern CamelServiceAuthType camel_sasl_cram_md5_authtype;
#define PARANOID(x) x
+#define CAMEL_SASL_DIGEST_MD5_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_DIGEST_MD5, CamelSaslDigestMd5Private))
+
/* Implements rfc2831 */
CamelServiceAuthType camel_sasl_digest_md5_authtype = {
TRUE
};
-static CamelSaslClass *parent_class = NULL;
-
enum {
STATE_AUTH,
STATE_FINAL
gint state;
};
+G_DEFINE_TYPE (CamelSaslDigestMd5, camel_sasl_digest_md5, CAMEL_TYPE_SASL)
+
static void
decode_lwsp (const gchar **in)
{
}
static void
-sasl_digest_md5_finalize (CamelObject *object)
+sasl_digest_md5_finalize (GObject *object)
{
CamelSaslDigestMd5 *sasl = CAMEL_SASL_DIGEST_MD5 (object);
struct _DigestChallenge *c = sasl->priv->challenge;
g_free (r);
}
- g_free (sasl->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_sasl_digest_md5_parent_class)->finalize (object);
}
static GByteArray *
static void
camel_sasl_digest_md5_class_init (CamelSaslDigestMd5Class *class)
{
+ GObjectClass *object_class;
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslDigestMd5Private));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = sasl_digest_md5_finalize;
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_digest_md5_challenge;
static void
camel_sasl_digest_md5_init (CamelSaslDigestMd5 *sasl)
{
- sasl->priv = g_new0 (CamelSaslDigestMd5Private, 1);
-}
-
-CamelType
-camel_sasl_digest_md5_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslDigestMd5",
- sizeof (CamelSaslDigestMd5),
- sizeof (CamelSaslDigestMd5Class),
- (CamelObjectClassInitFunc) camel_sasl_digest_md5_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_digest_md5_init,
- (CamelObjectFinalizeFunc) sasl_digest_md5_finalize);
- }
-
- return type;
+ sasl->priv = CAMEL_SASL_DIGEST_MD5_GET_PRIVATE (sasl);
}
#include <sys/types.h>
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_DIGEST_MD5_TYPE (camel_sasl_digest_md5_get_type ())
-#define CAMEL_SASL_DIGEST_MD5(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_DIGEST_MD5_TYPE, CamelSaslDigestMd5))
-#define CAMEL_SASL_DIGEST_MD5_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_DIGEST_MD5_TYPE, CamelSaslDigestMd5Class))
-#define CAMEL_IS_SASL_DIGEST_MD5(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_DIGEST_MD5_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_DIGEST_MD5 \
+ (camel_sasl_digest_md5_get_type ())
+#define CAMEL_SASL_DIGEST_MD5(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_DIGEST_MD5, CamelSaslDigestMd5))
+#define CAMEL_SASL_DIGEST_MD5_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_DIGEST_MD5, CamelSaslDigestMd5Class))
+#define CAMEL_IS_SASL_DIGEST_MD5(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_DIGEST_MD5))
+#define CAMEL_IS_SASL_DIGEST_MD5_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_DIGEST_MD5))
+#define CAMEL_SASL_DIGEST_MD5_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_DIGEST_MD5, CamelSaslDigestMd5Class))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_digest_md5_get_type (void);
+GType camel_sasl_digest_md5_get_type (void);
extern CamelServiceAuthType camel_sasl_digest_md5_authtype;
#define DBUS_INTERFACE "org.gnome.KrbAuthDialog"
#define DBUS_METHOD "org.gnome.KrbAuthDialog.acquireTgt"
+#define CAMEL_SASL_GSSAPI_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_GSSAPI, CamelSaslGssapiPrivate))
+
CamelServiceAuthType camel_sasl_gssapi_authtype = {
N_("GSSAPI"),
gss_name_t target;
};
-static CamelSaslClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSaslGssapi, camel_sasl_gssapi, CAMEL_TYPE_SASL)
static void
gssapi_set_exception (OM_uint32 major,
}
static void
-sasl_gssapi_finalize (CamelObject *object)
+sasl_gssapi_finalize (GObject *object)
{
CamelSaslGssapi *sasl = CAMEL_SASL_GSSAPI (object);
guint32 status;
if (sasl->priv->target != GSS_C_NO_NAME)
gss_release_name (&status, &sasl->priv->target);
- g_free (sasl->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_sasl_gssapi_parent_class)->finalize (object);
}
/* DBUS Specific code */
GByteArray *token,
CamelException *ex)
{
- CamelSaslGssapiPrivate *priv = CAMEL_SASL_GSSAPI (sasl)->priv;
+ CamelSaslGssapiPrivate *priv;
CamelService *service;
OM_uint32 major, minor, flags, time;
gss_buffer_desc inbuf, outbuf;
struct addrinfo *ai, hints;
const gchar *service_name;
+ priv = CAMEL_SASL_GSSAPI_GET_PRIVATE (sasl);
+
service = camel_sasl_get_service (sasl);
service_name = camel_sasl_get_service_name (sasl);
static void
camel_sasl_gssapi_class_init (CamelSaslGssapiClass *class)
{
+ GObjectClass *object_class;
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslGssapiPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = sasl_gssapi_finalize;
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_gssapi_challenge;
static void
camel_sasl_gssapi_init (CamelSaslGssapi *sasl)
{
- sasl->priv = g_new (struct _CamelSaslGssapiPrivate, 1);
+ sasl->priv = CAMEL_SASL_GSSAPI_GET_PRIVATE (sasl);
sasl->priv->state = GSSAPI_STATE_INIT;
sasl->priv->ctx = GSS_C_NO_CONTEXT;
sasl->priv->target = GSS_C_NO_NAME;
}
-CamelType
-camel_sasl_gssapi_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_sasl_get_type (),
- "CamelSaslGssapi",
- sizeof (CamelSaslGssapi),
- sizeof (CamelSaslGssapiClass),
- (CamelObjectClassInitFunc) camel_sasl_gssapi_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_gssapi_init,
- (CamelObjectFinalizeFunc) sasl_gssapi_finalize);
- }
-
- return type;
-}
-
#endif /* HAVE_KRB5 */
#include <sys/types.h>
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_GSSAPI_TYPE (camel_sasl_gssapi_get_type ())
-#define CAMEL_SASL_GSSAPI(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_GSSAPI_TYPE, CamelSaslGssapi))
-#define CAMEL_SASL_GSSAPI_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_GSSAPI_TYPE, CamelSaslGssapiClass))
-#define CAMEL_IS_SASL_GSSAPI(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_GSSAPI_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_GSSAPI \
+ (camel_sasl_gssapi_get_type ())
+#define CAMEL_SASL_GSSAPI(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_GSSAPI, CamelSaslGssapi))
+#define CAMEL_SASL_GSSAPI_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_GSSAPI, CamelSaslGssapiClass))
+#define CAMEL_IS_SASL_GSSAPI(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_GSSAPI))
+#define CAMEL_IS_SASL_GSSAPI_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_GSSAPI))
+#define CAMEL_SASL_GSSAPI_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_GSSAPI, CamelSaslGssapiClass))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_gssapi_get_type (void);
+GType camel_sasl_gssapi_get_type (void);
extern CamelServiceAuthType camel_sasl_gssapi_authtype;
#include "camel-sasl-login.h"
#include "camel-service.h"
+#define CAMEL_SASL_LOGIN_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_LOGIN, CamelSaslLoginPrivate))
+
CamelServiceAuthType camel_sasl_login_authtype = {
N_("Login"),
LOGIN_PASSWD
};
-static CamelSaslClass *parent_class = NULL;
-
struct _CamelSaslLoginPrivate {
gint state;
};
-static void
-sasl_login_finalize (CamelObject *object)
-{
- CamelSaslLogin *sasl = CAMEL_SASL_LOGIN (object);
-
- g_free (sasl->priv);
-}
+G_DEFINE_TYPE (CamelSaslLogin, camel_sasl_login, CAMEL_TYPE_SASL)
static GByteArray *
sasl_login_challenge (CamelSasl *sasl,
GByteArray *token,
CamelException *ex)
{
- CamelSaslLoginPrivate *priv = CAMEL_SASL_LOGIN (sasl)->priv;
+ CamelSaslLoginPrivate *priv;
GByteArray *buf = NULL;
CamelService *service;
CamelURL *url;
+ priv = CAMEL_SASL_LOGIN_GET_PRIVATE (sasl);
+
service = camel_sasl_get_service (sasl);
url = service->url;
g_return_val_if_fail (url->passwd != NULL, NULL);
{
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslLoginPrivate));
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_login_challenge;
static void
camel_sasl_login_init (CamelSaslLogin *sasl)
{
- sasl->priv = g_new0 (struct _CamelSaslLoginPrivate, 1);
-}
-
-CamelType
-camel_sasl_login_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslLogin",
- sizeof (CamelSaslLogin),
- sizeof (CamelSaslLoginClass),
- (CamelObjectClassInitFunc) camel_sasl_login_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_login_init,
- (CamelObjectFinalizeFunc) sasl_login_finalize);
- }
-
- return type;
+ sasl->priv = CAMEL_SASL_LOGIN_GET_PRIVATE (sasl);
}
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_LOGIN_TYPE (camel_sasl_login_get_type ())
-#define CAMEL_SASL_LOGIN(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_LOGIN_TYPE, CamelSaslLogin))
-#define CAMEL_SASL_LOGIN_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_LOGIN_TYPE, CamelSaslLoginClass))
-#define CAMEL_IS_SASL_LOGIN(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_LOGIN_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_LOGIN \
+ (camel_sasl_login_get_type ())
+#define CAMEL_SASL_LOGIN(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_LOGIN, CamelSaslLogin))
+#define CAMEL_SASL_LOGIN_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_LOGIN, CamelSaslLoginClass))
+#define CAMEL_IS_SASL_LOGIN(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_LOGIN))
+#define CAMEL_IS_SASL_LOGIN_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_LOGIN))
+#define CAMEL_SASL_LOGIN_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_LOGIN, CamelSaslLoginClass))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_login_get_type (void);
+GType camel_sasl_login_get_type (void);
extern CamelServiceAuthType camel_sasl_login_authtype;
#include "camel-sasl-ntlm.h"
+#define CAMEL_SASL_NTLM_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_NTLM, CamelSaslNTLMPrivate))
+
struct _CamelSaslNTLMPrivate {
gint placeholder; /* allow for future expansion */
};
TRUE
};
-static CamelSaslClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSaslNTLM, camel_sasl_ntlm, CAMEL_TYPE_SASL)
#define NTLM_REQUEST "NTLMSSP\x00\x01\x00\x00\x00\x06\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00"
{
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslNTLMPrivate));
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_ntlm_challenge;
}
-CamelType
-camel_sasl_ntlm_get_type (void)
+static void
+camel_sasl_ntlm_init (CamelSaslNTLM *sasl)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_sasl_get_type (), "CamelSaslNTLM",
- sizeof (CamelSaslNTLM),
- sizeof (CamelSaslNTLMClass),
- (CamelObjectClassInitFunc) camel_sasl_ntlm_class_init,
- NULL, NULL, NULL);
- }
-
- return type;
+ sasl->priv = CAMEL_SASL_NTLM_GET_PRIVATE (sasl);
}
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_NTLM_TYPE (camel_sasl_ntlm_get_type ())
-#define CAMEL_SASL_NTLM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_NTLM_TYPE, CamelSaslNTLM))
-#define CAMEL_SASL_NTLM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_NTLM_TYPE, CamelSaslNTLMClass))
-#define CAMEL_IS_SASL_NTLM(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_NTLM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_NTLM \
+ (camel_sasl_ntlm_get_type ())
+#define CAMEL_SASL_NTLM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_NTLM, CamelSaslNTLM))
+#define CAMEL_SASL_NTLM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_NTLM, CamelSaslNTLMClass))
+#define CAMEL_IS_SASL_NTLM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_NTLM))
+#define CAMEL_IS_SASL_NTLM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_NTLM))
+#define CAMEL_SASL_NTLM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_NTLM, CamelSaslNTLMClass))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_ntlm_get_type (void);
+GType camel_sasl_ntlm_get_type (void);
extern CamelServiceAuthType camel_sasl_ntlm_authtype;
#include "camel-sasl-plain.h"
#include "camel-service.h"
+#define CAMEL_SASL_PLAIN_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_PLAIN, CamelSaslPlainPrivate))
+
struct _CamelSaslPlainPrivate {
gint placeholder; /* allow for future expansion */
};
TRUE
};
-static CamelSaslClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSaslPlain, camel_sasl_plain, CAMEL_TYPE_SASL)
static GByteArray *
sasl_plain_challenge (CamelSasl *sasl,
{
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslPlainPrivate));
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_plain_challenge;
}
-CamelType
-camel_sasl_plain_get_type (void)
+static void
+camel_sasl_plain_init (CamelSaslPlain *sasl)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslPlain",
- sizeof (CamelSaslPlain),
- sizeof (CamelSaslPlainClass),
- (CamelObjectClassInitFunc) camel_sasl_plain_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
+ sasl->priv = CAMEL_SASL_PLAIN_GET_PRIVATE (sasl);
}
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_PLAIN_TYPE (camel_sasl_plain_get_type ())
-#define CAMEL_SASL_PLAIN(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_PLAIN_TYPE, CamelSaslPlain))
-#define CAMEL_SASL_PLAIN_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_PLAIN_TYPE, CamelSaslPlainClass))
-#define CAMEL_IS_SASL_PLAIN(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_PLAIN_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_PLAIN \
+ (camel_sasl_plain_get_type ())
+#define CAMEL_SASL_PLAIN(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_PLAIN, CamelSaslPlain))
+#define CAMEL_SASL_PLAIN_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_PLAIN, CamelSaslPlainClass))
+#define CAMEL_IS_SASL_PLAIN(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_PLAIN))
+#define CAMEL_IS_SASL_PLAIN_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_PLAIN))
+#define CAMEL_SASL_PLAIN_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_PLAIN, CamelSaslPlainClass))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_plain_get_type (void);
+GType camel_sasl_plain_get_type (void);
extern CamelServiceAuthType camel_sasl_plain_authtype;
#include "camel-session.h"
#include "camel-store.h"
+#define CAMEL_SASL_POPB4SMTP_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL_POPB4SMTP, CamelSaslPOPB4SMTPPrivate))
+
struct _CamelSaslPOPB4SMTPPrivate {
gint placeholder; /* allow for future expansion */
};
#define POPB4SMTP_LOCK(l) g_static_mutex_lock(&l)
#define POPB4SMTP_UNLOCK(l) g_static_mutex_unlock(&l)
-static CamelSaslClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSaslPOPB4SMTP, camel_sasl_popb4smtp, CAMEL_TYPE_SASL)
static GByteArray *
sasl_popb4smtp_challenge (CamelSasl *sasl,
store = camel_session_get_store(session, popuri, ex);
if (store) {
camel_sasl_set_authenticated (sasl, TRUE);
- camel_object_unref (store);
+ g_object_unref (store);
*timep = now;
} else {
camel_sasl_set_authenticated (sasl, FALSE);
{
CamelSaslClass *sasl_class;
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelSaslPOPB4SMTPPrivate));
sasl_class = CAMEL_SASL_CLASS (class);
sasl_class->challenge = sasl_popb4smtp_challenge;
poplast = g_hash_table_new (g_str_hash, g_str_equal);
}
-CamelType
-camel_sasl_popb4smtp_get_type (void)
+static void
+camel_sasl_popb4smtp_init (CamelSaslPOPB4SMTP *sasl)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslPOPB4SMTP",
- sizeof (CamelSaslPOPB4SMTP),
- sizeof (CamelSaslPOPB4SMTPClass),
- (CamelObjectClassInitFunc) camel_sasl_popb4smtp_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
+ sasl->priv = CAMEL_SASL_POPB4SMTP_GET_PRIVATE (sasl);
}
#include <camel/camel-sasl.h>
-#define CAMEL_SASL_POPB4SMTP_TYPE (camel_sasl_popb4smtp_get_type ())
-#define CAMEL_SASL_POPB4SMTP(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_POPB4SMTP_TYPE, CamelSaslPOPB4SMTP))
-#define CAMEL_SASL_POPB4SMTP_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_POPB4SMTP_TYPE, CamelSaslPOPB4SMTPClass))
-#define CAMEL_IS_SASL_POPB4SMTP(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_POPB4SMTP_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL_POPB4SMTP \
+ (camel_sasl_popb4smtp_get_type ())
+#define CAMEL_SASL_POPB4SMTP(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL_POPB4SMTP, CamelSaslPOPB4SMTP))
+#define CAMEL_SASL_POPB4SMTP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL_POPB4SMTP, CamelSaslPOPB4SMTPClass))
+#define CAMEL_IS_SASL_POPB4SMTP(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL_POPB4SMTP))
+#define CAMEL_IS_SASL_POPB4SMTP_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL_POPB4SMTP))
+#define CAMEL_SASL_POPB4SMTP_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL_POPB4SMTP, CamelSaslPOPB4SMTPClass))
G_BEGIN_DECLS
CamelSaslClass parent_class;
};
-CamelType camel_sasl_popb4smtp_get_type (void);
+GType camel_sasl_popb4smtp_get_type (void);
extern CamelServiceAuthType camel_sasl_popb4smtp_authtype;
#define w(x)
+#define CAMEL_SASL_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SASL, CamelSaslPrivate))
+
struct _CamelSaslPrivate {
CamelService *service;
gboolean authenticated;
gchar *mechanism;
};
-static CamelObjectClass *parent_class = NULL;
+enum {
+ PROP_0,
+ PROP_AUTHENTICATED,
+ PROP_MECHANISM,
+ PROP_SERVICE,
+ PROP_SERVICE_NAME
+};
+
+G_DEFINE_ABSTRACT_TYPE (CamelSasl, camel_sasl, CAMEL_TYPE_OBJECT)
static void
sasl_set_mechanism (CamelSasl *sasl,
g_return_if_fail (CAMEL_IS_SERVICE (service));
g_return_if_fail (sasl->priv->service == NULL);
- sasl->priv->service = camel_object_ref (service);
+ sasl->priv->service = g_object_ref (service);
}
static void
}
static void
-sasl_finalize (CamelSasl *sasl)
+sasl_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- g_free (sasl->priv->mechanism);
- g_free (sasl->priv->service_name);
- camel_object_unref (sasl->priv->service);
- g_free (sasl->priv);
+ switch (property_id) {
+ case PROP_AUTHENTICATED:
+ camel_sasl_set_authenticated (
+ CAMEL_SASL (object),
+ g_value_get_boolean (value));
+ return;
+
+ case PROP_MECHANISM:
+ sasl_set_mechanism (
+ CAMEL_SASL (object),
+ g_value_get_string (value));
+ return;
+
+ case PROP_SERVICE:
+ sasl_set_service (
+ CAMEL_SASL (object),
+ g_value_get_object (value));
+ return;
+
+ case PROP_SERVICE_NAME:
+ sasl_set_service_name (
+ CAMEL_SASL (object),
+ g_value_get_string (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
-camel_sasl_class_init (CamelSaslClass *camel_sasl_class)
+sasl_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- parent_class = camel_type_get_global_classfuncs (CAMEL_TYPE_OBJECT);
+ switch (property_id) {
+ case PROP_AUTHENTICATED:
+ g_value_set_boolean (
+ value, camel_sasl_get_authenticated (
+ CAMEL_SASL (object)));
+ return;
+
+ case PROP_MECHANISM:
+ g_value_set_string (
+ value, camel_sasl_get_mechanism (
+ CAMEL_SASL (object)));
+ return;
+
+ case PROP_SERVICE:
+ g_value_set_object (
+ value, camel_sasl_get_service (
+ CAMEL_SASL (object)));
+ return;
+
+ case PROP_SERVICE_NAME:
+ g_value_set_string (
+ value, camel_sasl_get_service_name (
+ CAMEL_SASL (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
-camel_sasl_init (CamelSasl *sasl)
+sasl_dispose (GObject *object)
{
- sasl->priv = g_new0 (CamelSaslPrivate, 1);
+ CamelSaslPrivate *priv;
+
+ priv = CAMEL_SASL_GET_PRIVATE (object);
+
+ if (priv->service != NULL) {
+ g_object_unref (priv->service);
+ priv->service = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_sasl_parent_class)->dispose (object);
}
-CamelType
-camel_sasl_get_type (void)
+static void
+sasl_finalize (GObject *object)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_TYPE_OBJECT,
- "CamelSasl",
- sizeof (CamelSasl),
- sizeof (CamelSaslClass),
- (CamelObjectClassInitFunc) camel_sasl_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_init,
- (CamelObjectFinalizeFunc) sasl_finalize);
- }
+ CamelSaslPrivate *priv;
- return type;
+ priv = CAMEL_SASL_GET_PRIVATE (object);
+
+ g_free (priv->mechanism);
+ g_free (priv->service_name);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_sasl_parent_class)->finalize (object);
+}
+
+static void
+camel_sasl_class_init (CamelSaslClass *class)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelSaslPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = sasl_set_property;
+ object_class->get_property = sasl_get_property;
+ object_class->dispose = sasl_dispose;
+ object_class->finalize = sasl_finalize;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_AUTHENTICATED,
+ g_param_spec_boolean (
+ "authenticated",
+ "Authenticated",
+ NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_MECHANISM,
+ g_param_spec_string (
+ "mechanism",
+ "Mechanism",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SERVICE,
+ g_param_spec_object (
+ "service",
+ "Service",
+ NULL,
+ CAMEL_TYPE_SERVICE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SERVICE_NAME,
+ g_param_spec_string (
+ "service-name",
+ "Service Name",
+ NULL,
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+}
+
+static void
+camel_sasl_init (CamelSasl *sasl)
+{
+ sasl->priv = CAMEL_SASL_GET_PRIVATE (sasl);
}
/**
const gchar *mechanism,
CamelService *service)
{
- CamelSasl *sasl;
+ GType type;
g_return_val_if_fail (service_name != NULL, NULL);
g_return_val_if_fail (mechanism != NULL, NULL);
/* We don't do ANONYMOUS here, because it's a little bit weird. */
if (!strcmp (mechanism, "CRAM-MD5"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_CRAM_MD5_TYPE);
+ type = CAMEL_TYPE_SASL_CRAM_MD5;
else if (!strcmp (mechanism, "DIGEST-MD5"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_DIGEST_MD5_TYPE);
+ type = CAMEL_TYPE_SASL_DIGEST_MD5;
#ifdef HAVE_KRB5
else if (!strcmp (mechanism, "GSSAPI"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_GSSAPI_TYPE);
+ type = CAMEL_TYPE_SASL_GSSAPI;
#endif
else if (!strcmp (mechanism, "PLAIN"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_PLAIN_TYPE);
+ type = CAMEL_TYPE_SASL_PLAIN;
else if (!strcmp (mechanism, "LOGIN"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_LOGIN_TYPE);
+ type = CAMEL_TYPE_SASL_LOGIN;
else if (!strcmp (mechanism, "POPB4SMTP"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_POPB4SMTP_TYPE);
+ type = CAMEL_TYPE_SASL_POPB4SMTP;
else if (!strcmp (mechanism, "NTLM"))
- sasl = (CamelSasl *) camel_object_new (CAMEL_SASL_NTLM_TYPE);
+ type = CAMEL_TYPE_SASL_NTLM;
else
return NULL;
- sasl_set_mechanism (sasl, mechanism);
- sasl_set_service (sasl, service);
- sasl_set_service_name (sasl, service_name);
-
- return sasl;
+ return g_object_new (
+ type, "mechanism", mechanism, "service",
+ service, "service-name", service_name, NULL);
}
/**
g_return_if_fail (CAMEL_IS_SASL (sasl));
sasl->priv->authenticated = authenticated;
+
+ g_object_notify (G_OBJECT (sasl), "authenticated");
}
const gchar *
#include <camel/camel-exception.h>
#include <camel/camel-service.h>
-#define CAMEL_SASL_TYPE (camel_sasl_get_type ())
-#define CAMEL_SASL(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_TYPE, CamelSasl))
-#define CAMEL_SASL_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_TYPE, CamelSaslClass))
-#define CAMEL_IS_SASL(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SASL \
+ (camel_sasl_get_type ())
+#define CAMEL_SASL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SASL, CamelSasl))
+#define CAMEL_SASL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SASL, CamelSaslClass))
+#define CAMEL_IS_SASL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SASL))
+#define CAMEL_IS_SASL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SASL))
#define CAMEL_SASL_GET_CLASS(obj) \
- ((CamelSaslClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SASL, CamelSaslClass))
G_BEGIN_DECLS
CamelException *ex);
};
-CamelType camel_sasl_get_type (void);
+GType camel_sasl_get_type (void);
GByteArray * camel_sasl_challenge (CamelSasl *sasl,
GByteArray *token,
CamelException *ex);
for (i=0; !truth && camel_internet_address_get(cia, i, &name, &addr);i++)
truth = (name && header_match(name, match, how)) || (addr && header_match(addr, match, how));
- camel_object_unref (cia);
+ g_object_unref (cia);
break;
}
camel_data_wrapper_write_to_stream (containee, stream);
camel_stream_write (stream, "", 1);
truth = regexec (pattern, (gchar *) byte_array->data, 0, NULL, 0) == 0;
- camel_object_unref (stream);
+ g_object_unref (stream);
}
return truth;
#include "camel-seekable-stream.h"
-static CamelStreamClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSeekableStream, camel_seekable_stream, CAMEL_TYPE_STREAM)
static gint
seekable_stream_reset (CamelStream *stream)
{
CamelStreamClass *stream_class;
- parent_class = CAMEL_STREAM_CLASS( camel_type_get_global_classfuncs( CAMEL_STREAM_TYPE ) );
-
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->reset = seekable_stream_reset;
stream->bound_end = CAMEL_STREAM_UNBOUND;
}
-CamelType
-camel_seekable_stream_get_type (void)
-{
- static CamelType camel_seekable_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_seekable_stream_type == CAMEL_INVALID_TYPE) {
- camel_seekable_stream_type = camel_type_register( CAMEL_STREAM_TYPE,
- "CamelSeekableStream",
- sizeof( CamelSeekableStream ),
- sizeof( CamelSeekableStreamClass ),
- (CamelObjectClassInitFunc) camel_seekable_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_seekable_stream_init,
- NULL );
- }
-
- return camel_seekable_stream_type;
-}
-
/**
* camel_seekable_stream_seek:
* @stream: a #CamelStream object
#include <unistd.h>
#include <camel/camel-stream.h>
-#define CAMEL_SEEKABLE_STREAM_TYPE (camel_seekable_stream_get_type ())
-#define CAMEL_SEEKABLE_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SEEKABLE_STREAM_TYPE, CamelSeekableStream))
-#define CAMEL_SEEKABLE_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SEEKABLE_STREAM_TYPE, CamelSeekableStreamClass))
-#define CAMEL_IS_SEEKABLE_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_SEEKABLE_STREAM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SEEKABLE_STREAM \
+ (camel_seekable_stream_get_type ())
+#define CAMEL_SEEKABLE_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SEEKABLE_STREAM, CamelSeekableStream))
+#define CAMEL_SEEKABLE_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SEEKABLE_STREAM, CamelSeekableStreamClass))
+#define CAMEL_IS_SEEKABLE_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SEEKABLE_STREAM))
+#define CAMEL_IS_SEEKABLE_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SEEKABLE_STREAM))
#define CAMEL_SEEKABLE_STREAM_GET_CLASS(obj) \
- ((CamelSeekableStreamClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SEEKABLE_STREAM, CamelSeekableStreamClass))
G_BEGIN_DECLS
off_t end);
};
-CamelType camel_seekable_stream_get_type (void);
+GType camel_seekable_stream_get_type (void);
off_t camel_seekable_stream_seek (CamelSeekableStream *stream,
off_t offset,
CamelStreamSeekPolicy policy);
#include "camel-seekable-substream.h"
-static CamelSeekableStreamClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSeekableSubstream, camel_seekable_substream, CAMEL_TYPE_SEEKABLE_STREAM)
static gboolean
seekable_substream_parent_reset (CamelSeekableSubstream *seekable_substream,
}
static void
-camel_seekable_substream_finalize (CamelSeekableSubstream *seekable_substream)
+seekable_substream_dispose (GObject *object)
{
- if (seekable_substream->parent_stream != NULL)
- camel_object_unref (seekable_substream->parent_stream);
+ CamelSeekableSubstream *seekable_substream;
+
+ seekable_substream = CAMEL_SEEKABLE_SUBSTREAM (object);
+
+ if (seekable_substream->parent_stream != NULL) {
+ g_object_unref (seekable_substream->parent_stream);
+ seekable_substream = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_seekable_substream_parent_class)->dispose (object);
}
static gssize
static void
camel_seekable_substream_class_init (CamelSeekableSubstreamClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
CamelSeekableStreamClass *seekable_stream_class;
- parent_class = CAMEL_SEEKABLE_STREAM_CLASS (camel_type_get_global_classfuncs (camel_seekable_stream_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = seekable_substream_dispose;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = seekable_substream_read;
{
}
-CamelType
-camel_seekable_substream_get_type (void)
-{
- static CamelType camel_seekable_substream_type = CAMEL_INVALID_TYPE;
-
- if (camel_seekable_substream_type == CAMEL_INVALID_TYPE) {
- camel_seekable_substream_type = camel_type_register (camel_seekable_stream_get_type (), "CamelSeekableSubstream",
- sizeof (CamelSeekableSubstream),
- sizeof (CamelSeekableSubstreamClass),
- (CamelObjectClassInitFunc) camel_seekable_substream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_seekable_substream_init,
- (CamelObjectFinalizeFunc) camel_seekable_substream_finalize);
- }
-
- return camel_seekable_substream_type;
-}
-
/**
* camel_seekable_substream_new:
* @parent_stream: a #CamelSeekableStream object
g_return_val_if_fail (CAMEL_IS_SEEKABLE_STREAM (parent_stream), NULL);
/* Create the seekable substream. */
- seekable_substream = CAMEL_SEEKABLE_SUBSTREAM (camel_object_new (camel_seekable_substream_get_type ()));
+ seekable_substream = g_object_new (CAMEL_TYPE_SEEKABLE_SUBSTREAM, NULL);
/* Initialize it. */
- seekable_substream->parent_stream = camel_object_ref (parent_stream);
+ seekable_substream->parent_stream = g_object_ref (parent_stream);
/* Set the bound of the substream. We can ignore any possible error
* here, because if we fail to seek now, it will try again later. */
#include <camel/camel-seekable-stream.h>
-#define CAMEL_SEEKABLE_SUBSTREAM_TYPE (camel_seekable_substream_get_type ())
-#define CAMEL_SEEKABLE_SUBSTREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SEEKABLE_SUBSTREAM_TYPE, CamelSeekableSubstream))
-#define CAMEL_SEEKABLE_SUBSTREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SEEKABLE_SUBSTREAM_TYPE, CamelSeekableSubstreamClass))
-#define CAMEL_IS_SEEKABLE_SUBSTREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_SEEKABLE_SUBSTREAM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SEEKABLE_SUBSTREAM \
+ (camel_seekable_substream_get_type ())
+#define CAMEL_SEEKABLE_SUBSTREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SEEKABLE_SUBSTREAM, CamelSeekableSubstream))
+#define CAMEL_SEEKABLE_SUBSTREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SEEKABLE_SUBSTREAM, CamelSeekableSubstreamClass))
+#define CAMEL_IS_SEEKABLE_SUBSTREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SEEKABLE_SUBSTREAM))
+#define CAMEL_IS_SEEKABLE_SUBSTREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SEEKABLE_SUBSTREAM))
+#define CAMEL_SEEKABLE_SUBSTREAM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SEEKABLE_SUBSTREAM, CamelSeekableSubstreamClass))
G_BEGIN_DECLS
CamelSeekableStreamClass parent_class;
};
-CamelType camel_seekable_substream_get_type (void);
+GType camel_seekable_substream_get_type (void);
/* public methods */
#define d(x)
#define w(x)
+#define CAMEL_SERVICE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SERVICE, CamelServicePrivate))
+
struct _CamelServicePrivate {
GStaticRecMutex connect_lock; /* for locking connection operations */
GStaticMutex connect_op_lock; /* for locking the connection_op */
};
-static CamelObjectClass *camel_service_parent_class = NULL;
+G_DEFINE_ABSTRACT_TYPE (CamelService, camel_service, CAMEL_TYPE_OBJECT)
static void
-camel_service_finalize (CamelObject *object)
+service_finalize (GObject *object)
{
CamelService *service = CAMEL_SERVICE (object);
camel_url_free (service->url);
if (service->session)
- camel_object_unref (service->session);
+ g_object_unref (service->session);
g_static_rec_mutex_free (&service->priv->connect_lock);
g_static_mutex_free (&service->priv->connect_op_lock);
- g_free (service->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_service_parent_class)->finalize (object);
}
static gint
service->provider = provider;
service->url = camel_url_copy(url);
- service->session = camel_object_ref (session);
+ service->session = g_object_ref (session);
service->status = CAMEL_SERVICE_DISCONNECTED;
{
g_warning (
"%s does not implement CamelServiceClass::get_name()",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (service)));
+ G_OBJECT_TYPE_NAME (service));
- return g_strdup (camel_type_to_name (CAMEL_OBJECT_GET_TYPE (service)));
+ return g_strdup (G_OBJECT_TYPE_NAME (service));
}
static gchar *
static void
camel_service_class_init (CamelServiceClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
- camel_service_parent_class = camel_type_get_global_classfuncs (CAMEL_TYPE_OBJECT);
+ g_type_class_add_private (class, sizeof (CamelServicePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = service_finalize;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->setv = service_setv;
static void
camel_service_init (CamelService *service)
{
- service->priv = g_malloc0(sizeof(*service->priv));
+ service->priv = CAMEL_SERVICE_GET_PRIVATE (service);
g_static_rec_mutex_init (&service->priv->connect_lock);
g_static_mutex_init (&service->priv->connect_op_lock);
}
-CamelType
-camel_service_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type =
- camel_type_register (CAMEL_TYPE_OBJECT,
- "CamelService",
- sizeof (CamelService),
- sizeof (CamelServiceClass),
- (CamelObjectClassInitFunc) camel_service_class_init,
- NULL,
- (CamelObjectInitFunc) camel_service_init,
- camel_service_finalize );
- }
-
- return type;
-}
-
/**
* camel_service_construct:
* @service: a #CamelService object
camel_service_unlock (service, CS_REC_CONNECT_LOCK);
service->status = CAMEL_SERVICE_DISCONNECTED;
+
return res;
}
*
* Locks #service's #lock. Unlock it with camel_service_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_service_lock (CamelService *service, CamelServiceLock lock)
+camel_service_lock (CamelService *service,
+ CamelServiceLock lock)
{
- g_return_if_fail (service != NULL);
g_return_if_fail (CAMEL_IS_SERVICE (service));
- g_return_if_fail (service->priv != NULL);
switch (lock) {
- case CS_REC_CONNECT_LOCK:
- g_static_rec_mutex_lock (&service->priv->connect_lock);
- break;
- case CS_CONNECT_OP_LOCK:
- g_static_mutex_lock (&service->priv->connect_op_lock);
- break;
- default:
- g_return_if_reached ();
+ case CS_REC_CONNECT_LOCK:
+ g_static_rec_mutex_lock (&service->priv->connect_lock);
+ break;
+ case CS_CONNECT_OP_LOCK:
+ g_static_mutex_lock (&service->priv->connect_op_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #service's #lock, previously locked with camel_service_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_service_unlock (CamelService *service, CamelServiceLock lock)
+camel_service_unlock (CamelService *service,
+ CamelServiceLock lock)
{
- g_return_if_fail (service != NULL);
g_return_if_fail (CAMEL_IS_SERVICE (service));
- g_return_if_fail (service->priv != NULL);
switch (lock) {
- case CS_REC_CONNECT_LOCK:
- g_static_rec_mutex_unlock (&service->priv->connect_lock);
- break;
- case CS_CONNECT_OP_LOCK:
- g_static_mutex_unlock (&service->priv->connect_op_lock);
- break;
- default:
- g_return_if_reached ();
+ case CS_REC_CONNECT_LOCK:
+ g_static_rec_mutex_unlock (&service->priv->connect_lock);
+ break;
+ case CS_CONNECT_OP_LOCK:
+ g_static_mutex_unlock (&service->priv->connect_op_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-provider.h>
#include <camel/camel-operation.h>
-#define CAMEL_SERVICE_TYPE (camel_service_get_type ())
-#define CAMEL_SERVICE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SERVICE_TYPE, CamelService))
-#define CAMEL_SERVICE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SERVICE_TYPE, CamelServiceClass))
-#define CAMEL_IS_SERVICE(o) (CAMEL_CHECK_TYPE((o), CAMEL_SERVICE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SERVICE \
+ (camel_service_get_type ())
+#define CAMEL_SERVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SERVICE, CamelService))
+#define CAMEL_SERVICE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SERVICE, CamelServiceClass))
+#define CAMEL_IS_SERVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SERVICE))
+#define CAMEL_IS_SERVICE_CLASS(obj) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SERVICE))
#define CAMEL_SERVICE_GET_CLASS(obj) \
- ((CamelServiceClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SERVICE, CamelServiceClass))
G_BEGIN_DECLS
gboolean need_password; /* needs a password to authenticate */
} CamelServiceAuthType;
-CamelType camel_service_get_type (void);
+GType camel_service_get_type (void);
gboolean camel_service_construct (CamelService *service,
struct _CamelSession *session,
CamelProvider *provider,
CamelProvider * camel_service_get_provider (CamelService *service);
GList * camel_service_query_auth_types (CamelService *service,
CamelException *ex);
-
-void camel_service_lock (CamelService *service, CamelServiceLock lock);
-void camel_service_unlock (CamelService *service, CamelServiceLock lock);
+void camel_service_lock (CamelService *service,
+ CamelServiceLock lock);
+void camel_service_unlock (CamelService *service,
+ CamelServiceLock lock);
G_END_DECLS
#define d(x)
+#define CAMEL_SESSION_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SESSION, CamelSessionPrivate))
+
struct _CamelSessionPrivate {
GMutex *lock; /* for locking everything basically */
GMutex *thread_lock; /* locking threads */
GHashTable *thread_msg_op;
GHashTable *junk_headers;
-
};
+G_DEFINE_TYPE (CamelSession, camel_session, CAMEL_TYPE_OBJECT)
+
static void
cs_thread_status (CamelOperation *op,
const gchar *what,
}
static void
-session_finalize (CamelObject *object)
+session_finalize (GObject *object)
{
CamelSession *session = CAMEL_SESSION (object);
GThreadPool *thread_pool = session->priv->thread_pool;
g_hash_table_destroy (session->priv->junk_headers);
}
- g_free(session->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_session_parent_class)->finalize (object);
}
static CamelService *
CamelURL *url;
CamelProvider *provider;
CamelService *service;
- CamelException internal_ex;
url = camel_url_new (url_string, ex);
if (!url)
/* Now look up the service in the provider's cache */
service = camel_object_bag_reserve(provider->service_cache[type], url);
if (service == NULL) {
- service = (CamelService *)camel_object_new (provider->object_types[type]);
- camel_exception_init (&internal_ex);
- camel_service_construct (service, session, provider, url, &internal_ex);
- if (camel_exception_is_set (&internal_ex)) {
- camel_exception_xfer (ex, &internal_ex);
- camel_object_unref (service);
+ service = g_object_new (provider->object_types[type], NULL);
+ if (!camel_service_construct (service, session, provider, url, ex)) {
+ g_object_unref (service);
service = NULL;
camel_object_bag_abort(provider->service_cache[type], url);
} else {
m = g_malloc0(size);
m->ops = ops;
- m->session = camel_object_ref (session);
+ m->session = g_object_ref (session);
m->op = camel_operation_new(cs_thread_status, m);
camel_exception_init(&m->ex);
camel_session_lock (session, CS_THREAD_LOCK);
if (msg->op)
camel_operation_unref(msg->op);
camel_exception_clear(&msg->ex);
- camel_object_unref (msg->session);
+ g_object_unref (msg->session);
g_free(msg);
}
static void
camel_session_class_init (CamelSessionClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
+ g_type_class_add_private (class, sizeof (CamelSessionPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = session_finalize;
+
class->get_service = session_get_service;
class->get_storage_path = session_get_storage_path;
class->thread_msg_new = session_thread_msg_new;
static void
camel_session_init (CamelSession *session)
{
- session->priv = g_malloc0(sizeof(*session->priv));
+ session->priv = CAMEL_SESSION_GET_PRIVATE (session);
session->online = TRUE;
session->network_state = TRUE;
session->priv->junk_headers = NULL;
}
-CamelType
-camel_session_get_type (void)
-{
- static CamelType camel_session_type = CAMEL_INVALID_TYPE;
-
- if (camel_session_type == CAMEL_INVALID_TYPE) {
- camel_session_type = camel_type_register (
- camel_object_get_type (), "CamelSession",
- sizeof (CamelSession),
- sizeof (CamelSessionClass),
- (CamelObjectClassInitFunc) camel_session_class_init,
- NULL,
- (CamelObjectInitFunc) camel_session_init,
- (CamelObjectFinalizeFunc) session_finalize);
- }
-
- return camel_session_type;
-}
-
/**
* camel_session_construct:
* @session: a #CamelSession object to construct
g_return_val_if_fail (class->get_service != NULL, NULL);
camel_session_lock (session, CS_SESSION_LOCK);
+
service = class->get_service (session, url_string, type, ex);
+
camel_session_unlock (session, CS_SESSION_LOCK);
return service;
if (svc->status != CAMEL_SERVICE_CONNECTED) {
if (camel_service_connect (svc, ex) == FALSE) {
- camel_object_unref (svc);
+ g_object_unref (svc);
return NULL;
}
}
*
* Locks #session's #lock. Unlock it with camel_session_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_session_lock (CamelSession *session, CamelSessionLock lock)
+camel_session_lock (CamelSession *session,
+ CamelSessionLock lock)
{
- g_return_if_fail (session != NULL);
g_return_if_fail (CAMEL_IS_SESSION (session));
- g_return_if_fail (session->priv != NULL);
switch (lock) {
- case CS_SESSION_LOCK:
- g_mutex_lock (session->priv->lock);
- break;
- case CS_THREAD_LOCK:
- g_mutex_lock (session->priv->thread_lock);
- break;
- default:
- g_return_if_reached ();
+ case CS_SESSION_LOCK:
+ g_mutex_lock (session->priv->lock);
+ break;
+ case CS_THREAD_LOCK:
+ g_mutex_lock (session->priv->thread_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #session's #lock, previously locked with camel_session_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_session_unlock (CamelSession *session, CamelSessionLock lock)
+camel_session_unlock (CamelSession *session,
+ CamelSessionLock lock)
{
- g_return_if_fail (session != NULL);
g_return_if_fail (CAMEL_IS_SESSION (session));
- g_return_if_fail (session->priv != NULL);
switch (lock) {
- case CS_SESSION_LOCK:
- g_mutex_unlock (session->priv->lock);
- break;
- case CS_THREAD_LOCK:
- g_mutex_unlock (session->priv->thread_lock);
- break;
- default:
- g_return_if_reached ();
+ case CS_SESSION_LOCK:
+ g_mutex_unlock (session->priv->lock);
+ break;
+ case CS_THREAD_LOCK:
+ g_mutex_unlock (session->priv->thread_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-provider.h>
#include <camel/camel-service.h>
-#define CAMEL_SESSION_TYPE (camel_session_get_type ())
-#define CAMEL_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SESSION_TYPE, CamelSession))
-#define CAMEL_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SESSION_TYPE, CamelSessionClass))
-#define CAMEL_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_SESSION_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SESSION \
+ (camel_session_get_type ())
+#define CAMEL_SESSION(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SESSION, CamelSession))
+#define CAMEL_SESSION_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SESSION, CamelSessionClass))
+#define CAMEL_IS_SESSION(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SESSION))
+#define CAMEL_IS_SESSION_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SESSION))
#define CAMEL_SESSION_GET_CLASS(obj) \
- ((CamelSessionClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SESSION, CamelSessionClass))
G_BEGIN_DECLS
CAMEL_SESSION_PASSPHRASE = 1 << 4
};
-typedef enum _CamelSessionLock {
+typedef enum {
CS_SESSION_LOCK,
CS_THREAD_LOCK
} CamelSessionLock;
CamelException *ex);
};
-CamelType camel_session_get_type (void);
+GType camel_session_get_type (void);
void camel_session_construct (CamelSession *session,
const gchar *storage_path);
CamelMimeMessage *message,
const gchar *address,
CamelException *ex);
-
-void camel_session_lock (CamelSession *session, CamelSessionLock lock);
-void camel_session_unlock (CamelSession *session, CamelSessionLock lock);
+void camel_session_lock (CamelSession *session,
+ CamelSessionLock lock);
+void camel_session_unlock (CamelSession *session,
+ CamelSessionLock lock);
G_END_DECLS
#define d(x)
+#define CAMEL_SMIME_CONTEXT_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_SMIME_CONTEXT, CamelSMIMEContextPrivate))
+
struct _CamelSMIMEContextPrivate {
CERTCertDBHandle *certdb;
guint send_encrypt_key_prefs:1;
};
-static CamelCipherContextClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelSMIMEContext, camel_smime_context, CAMEL_TYPE_CIPHER_CONTEXT)
static void
smime_cert_data_free (gpointer cert_data)
mem = camel_stream_mem_new_with_byte_array (buffer);
camel_stream_write_to_stream (extstream, mem);
NSS_CMSDigestContext_Update (digcx, buffer->data, buffer->len);
- camel_object_unref (mem);
+ g_object_unref (mem);
if (NSS_CMSDigestContext_FinishMultiple (digcx, poolp, &digests) != SECSuccess) {
set_nss_error (ex, _("Cannot calculate digests"));
return NULL;
}
-static void
-smime_context_finalize (CamelObject *object)
-{
- CamelSMIMEContext *context = (CamelSMIMEContext *)object;
-
- /* FIXME: do we have to free the certdb? */
-
- g_free (context->priv);
-}
-
static const gchar *
smime_context_hash_to_id (CamelCipherContext *context,
CamelCipherHash hash)
mps->signature = sigpart;
mps->contentraw = istream;
camel_stream_reset (istream);
- camel_object_ref (istream);
+ g_object_ref (istream);
camel_medium_set_content ((CamelMedium *)opart, (CamelDataWrapper *)mps);
} else {
camel_mime_part_set_encoding (opart, CAMEL_TRANSFER_ENCODING_BASE64);
}
- camel_object_unref (dw);
+ g_object_unref (dw);
fail:
- camel_object_unref (ostream);
- camel_object_unref (istream);
+ g_object_unref (ostream);
+ g_object_unref (istream);
return res;
}
NSS_CMSMessage_Destroy (cmsg);
fail:
- camel_object_unref (mem);
+ g_object_unref (mem);
if (constream)
- camel_object_unref (constream);
+ g_object_unref (constream);
return valid;
}
camel_data_wrapper_write_to_stream ((CamelDataWrapper *)ipart, mem);
if (NSS_CMSEncoder_Update (enc, (gchar *) buffer->data, buffer->len) != SECSuccess) {
NSS_CMSEncoder_Cancel (enc);
- camel_object_unref (mem);
+ g_object_unref (mem);
set_nss_error (ex, _("Failed to add data to encoder"));
goto fail;
}
- camel_object_unref (mem);
+ g_object_unref (mem);
if (NSS_CMSEncoder_Finish(enc) != SECSuccess) {
set_nss_error (ex, _("Failed to encode data"));
dw = camel_data_wrapper_new ();
camel_data_wrapper_construct_from_stream (dw, ostream);
- camel_object_unref (ostream);
+ g_object_unref (ostream);
dw->encoding = CAMEL_TRANSFER_ENCODING_BINARY;
ct = camel_content_type_new ("application", "x-pkcs7-mime");
camel_content_type_unref (ct);
camel_medium_set_content ((CamelMedium *)opart, dw);
- camel_object_unref (dw);
+ g_object_unref (dw);
camel_mime_part_set_disposition (opart, "attachment");
camel_mime_part_set_filename (opart, "smime.p7m");
fail:
if (ostream)
- camel_object_unref (ostream);
+ g_object_unref (ostream);
if (cmsg)
NSS_CMSMessage_Destroy (cmsg);
if (bulkkey)
CERT_DestroyCertificate (recipient_certs[i]);
}
- PORT_FreeArena(poolp, PR_FALSE);
+ PORT_FreeArena (poolp, PR_FALSE);
return -1;
}
buffer = g_byte_array_new ();
istream = camel_stream_mem_new_with_byte_array (buffer);
camel_data_wrapper_decode_to_stream (camel_medium_get_content ((CamelMedium *)ipart), istream);
- camel_stream_reset ((CamelStream *)istream);
+ camel_stream_reset (istream);
dec = NSS_CMSDecoder_Start (NULL,
sm_write_stream, ostream, /* content callback */
cmsg = NSS_CMSDecoder_Finish (dec);
}
- camel_object_unref (istream);
+ g_object_unref (istream);
if (cmsg == NULL) {
set_nss_error (ex, _("Decoder failed"));
NSS_CMSMessage_Destroy (cmsg);
fail:
- camel_object_unref (ostream);
+ g_object_unref (ostream);
return valid;
}
{
CamelCipherContextClass *cipher_context_class;
- parent_class = CAMEL_CIPHER_CONTEXT_CLASS(camel_type_get_global_classfuncs(camel_cipher_context_get_type()));
+ g_type_class_add_private (class, sizeof (CamelSMIMEContextPrivate));
cipher_context_class = CAMEL_CIPHER_CONTEXT_CLASS (class);
cipher_context_class->sign_protocol = "application/x-pkcs7-signature";
static void
camel_smime_context_init (CamelSMIMEContext *smime_context)
{
- smime_context->priv = g_malloc0(sizeof(*smime_context->priv));
+ smime_context->priv = CAMEL_SMIME_CONTEXT_GET_PRIVATE (smime_context);
smime_context->priv->certdb = CERT_GetDefaultCertDB ();
smime_context->priv->sign_mode = CAMEL_SMIME_SIGN_CLEARSIGN;
smime_context->priv->password_tries = 0;
}
-CamelType
-camel_smime_context_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_cipher_context_get_type(),
- "CamelSMIMEContext",
- sizeof(CamelSMIMEContext),
- sizeof(CamelSMIMEContextClass),
- (CamelObjectClassInitFunc) camel_smime_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_smime_context_init,
- (CamelObjectFinalizeFunc) smime_context_finalize);
- }
-
- return type;
-}
-
/**
* camel_smime_context_new:
* @session: session
CamelCipherContext *
camel_smime_context_new (CamelSession *session)
{
- CamelCipherContext *cipher;
- CamelSMIMEContext *ctx;
-
g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
- ctx =(CamelSMIMEContext *) camel_object_new(camel_smime_context_get_type());
-
- cipher = CAMEL_CIPHER_CONTEXT (ctx);
- camel_cipher_context_construct (cipher, session);
-
- return cipher;
+ return g_object_new (
+ CAMEL_TYPE_SMIME_CONTEXT,
+ "session", session, NULL);
}
void
NULL, NULL, /* password callback */
NULL, NULL); /* decrypt key callback */
- NSS_CMSDecoder_Update(dec, (gchar *) buffer->data, buffer->len);
- camel_object_unref (istream);
+ NSS_CMSDecoder_Update (dec, (gchar *) buffer->data, buffer->len);
+ g_object_unref (istream);
cmsg = NSS_CMSDecoder_Finish (dec);
if (cmsg) {
#include <camel/camel-cipher-context.h>
-#define CAMEL_SMIME_CONTEXT_TYPE (camel_smime_context_get_type())
-#define CAMEL_SMIME_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SMIME_CONTEXT_TYPE, CamelSMIMEContext))
-#define CAMEL_SMIME_CONTEXT_CLASS(k)(CAMEL_CHECK_CLASS_CAST((k), CAMEL_SMIME_CONTEXT_TYPE, CamelSMIMEContextClass))
-#define CAMEL_IS_SMIME_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_SMIME_CONTEXT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SMIME_CONTEXT \
+ (camel_smime_context_get_type())
+#define CAMEL_SMIME_CONTEXT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SMIME_CONTEXT, CamelSMIMEContext))
+#define CAMEL_SMIME_CONTEXT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SMIME_CONTEXT, CamelSMIMEContextClass))
+#define CAMEL_IS_SMIME_CONTEXT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SMIME_CONTEXT))
+#define CAMEL_IS_SMIME_CONTEXT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SMIME_CONTEXT))
+#define CAMEL_SMIME_CONTEXT_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SMIME_CONTEXT, CamelSMIMEContextClass))
G_BEGIN_DECLS
CamelCipherContextClass parent_class;
};
-CamelType camel_smime_context_get_type(void);
+GType camel_smime_context_get_type(void);
CamelCipherContext *camel_smime_context_new(CamelSession *session);
#define d(x)
#define io(x) /* io debug */
-struct _CamelStoreSummaryPrivate {
- GMutex *summary_lock; /* for the summary hashtable/array */
- GMutex *io_lock; /* load/save lock, for access to saved_count, etc */
- GMutex *ref_lock; /* for reffing/unreffing messageinfo's ALWAYS obtain before CSS_SUMMARY_LOCK */
-};
-
/* possible versions, for versioning changes */
#define CAMEL_STORE_SUMMARY_VERSION_0 (1)
#define CAMEL_STORE_SUMMARY_VERSION_2 (2)
/* current version */
#define CAMEL_STORE_SUMMARY_VERSION (2)
-#define CAMEL_STORE_SUMMARY_GET_PRIVATE(o) (((CamelStoreSummary *)(o))->priv)
+#define CAMEL_STORE_SUMMARY_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_STORE_SUMMARY, CamelStoreSummaryPrivate))
-static CamelObjectClass *camel_store_summary_parent;
+struct _CamelStoreSummaryPrivate {
+ GMutex *summary_lock; /* for the summary hashtable/array */
+ GMutex *io_lock; /* load/save lock, for access to saved_count, etc */
+ GMutex *ref_lock; /* for reffing/unreffing messageinfo's ALWAYS obtain before CSS_SUMMARY_LOCK */
+};
+
+G_DEFINE_TYPE (CamelStoreSummary, camel_store_summary, CAMEL_TYPE_OBJECT)
static void
-store_summary_finalize (CamelStoreSummary *summary)
+store_summary_finalize (GObject *object)
{
+ CamelStoreSummary *summary = CAMEL_STORE_SUMMARY (object);
+
camel_store_summary_clear (summary);
g_ptr_array_free (summary->folders, TRUE);
g_hash_table_destroy (summary->folders_path);
g_mutex_free (summary->priv->io_lock);
g_mutex_free (summary->priv->ref_lock);
- g_free (summary->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_store_summary_parent_class)->finalize (object);
}
static gint
static void
camel_store_summary_class_init (CamelStoreSummaryClass *class)
{
- camel_store_summary_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelStoreSummaryPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = store_summary_finalize;
class->summary_header_load = store_summary_summary_header_load;
class->summary_header_save = store_summary_summary_header_save;
static void
camel_store_summary_init (CamelStoreSummary *summary)
{
- summary->priv = g_new0 (CamelStoreSummaryPrivate, 1);
+ summary->priv = CAMEL_STORE_SUMMARY_GET_PRIVATE (summary);
summary->store_info_size = sizeof (CamelStoreInfo);
summary->priv->ref_lock = g_mutex_new ();
}
-CamelType
-camel_store_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelStoreSummary",
- sizeof (CamelStoreSummary),
- sizeof (CamelStoreSummaryClass),
- (CamelObjectClassInitFunc) camel_store_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_store_summary_init,
- (CamelObjectFinalizeFunc) store_summary_finalize);
- }
-
- return type;
-}
-
/**
* camel_store_summary_new:
*
CamelStoreSummary *
camel_store_summary_new (void)
{
- return CAMEL_STORE_SUMMARY (camel_object_new (camel_store_summary_get_type ()));
+ return g_object_new (CAMEL_TYPE_STORE_SUMMARY, NULL);
}
/**
*
* Locks #summary's #lock. Unlock it with camel_store_summary_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_store_summary_lock (CamelStoreSummary *summary, CamelStoreSummaryLock lock)
+camel_store_summary_lock (CamelStoreSummary *summary,
+ CamelStoreSummaryLock lock)
{
- g_return_if_fail (summary != NULL);
g_return_if_fail (CAMEL_IS_STORE_SUMMARY (summary));
- g_return_if_fail (summary->priv != NULL);
switch (lock) {
- case CSS_SUMMARY_LOCK:
- g_mutex_lock (summary->priv->summary_lock);
- break;
- case CSS_IO_LOCK:
- g_mutex_lock (summary->priv->io_lock);
- break;
- case CSS_REF_LOCK:
- g_mutex_lock (summary->priv->ref_lock);
- break;
- default:
- g_return_if_reached ();
+ case CSS_SUMMARY_LOCK:
+ g_mutex_lock (summary->priv->summary_lock);
+ break;
+ case CSS_IO_LOCK:
+ g_mutex_lock (summary->priv->io_lock);
+ break;
+ case CSS_REF_LOCK:
+ g_mutex_lock (summary->priv->ref_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #summary's #lock, previously locked with camel_store_summary_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_store_summary_unlock (CamelStoreSummary *summary, CamelStoreSummaryLock lock)
+camel_store_summary_unlock (CamelStoreSummary *summary,
+ CamelStoreSummaryLock lock)
{
- g_return_if_fail (summary != NULL);
g_return_if_fail (CAMEL_IS_STORE_SUMMARY (summary));
- g_return_if_fail (summary->priv != NULL);
switch (lock) {
- case CSS_SUMMARY_LOCK:
- g_mutex_unlock (summary->priv->summary_lock);
- break;
- case CSS_IO_LOCK:
- g_mutex_unlock (summary->priv->io_lock);
- break;
- case CSS_REF_LOCK:
- g_mutex_unlock (summary->priv->ref_lock);
- break;
- default:
- g_return_if_reached ();
+ case CSS_SUMMARY_LOCK:
+ g_mutex_unlock (summary->priv->summary_lock);
+ break;
+ case CSS_IO_LOCK:
+ g_mutex_unlock (summary->priv->io_lock);
+ break;
+ case CSS_REF_LOCK:
+ g_mutex_unlock (summary->priv->ref_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-object.h>
#include <camel/camel-url.h>
-#define CAMEL_STORE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_store_summary_get_type (), CamelStoreSummary)
-#define CAMEL_STORE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_store_summary_get_type (), CamelStoreSummaryClass)
-#define CAMEL_IS_STORE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_store_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_STORE_SUMMARY \
+ (camel_store_summary_get_type ())
+#define CAMEL_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STORE_SUMMARY, CamelStoreSummary))
+#define CAMEL_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STORE_SUMMARY, CamelStoreSummaryClass))
+#define CAMEL_IS_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STORE_SUMMARY))
+#define CAMEL_IS_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STORE_SUMMARY))
#define CAMEL_STORE_SUMMARY_GET_CLASS(obj) \
- ((CamelStoreSummaryClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STORE_SUMMARY, CamelStoreSummaryClass))
G_BEGIN_DECLS
CAMEL_STORE_SUMMARY_FRAGMENT = 1<<1 /* path name is stored in fragment rather than path */
} CamelStoreSummaryFlags;
-typedef enum _CamelStoreSummaryLock {
+typedef enum {
CSS_SUMMARY_LOCK,
CSS_IO_LOCK,
CSS_REF_LOCK
void (*store_info_set_string)(CamelStoreSummary *, CamelStoreInfo *, int, const gchar *);
};
-CamelType camel_store_summary_get_type (void);
+GType camel_store_summary_get_type (void);
CamelStoreSummary *camel_store_summary_new (void);
void camel_store_summary_set_filename(CamelStoreSummary *summary, const gchar *filename);
#define d(x)
#define w(x)
+#define CAMEL_STORE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_STORE, CamelStorePrivate))
+
struct _CamelStorePrivate {
GStaticRecMutex folder_lock; /* for locking folder operations */
};
-static gpointer camel_store_parent_class;
+G_DEFINE_ABSTRACT_TYPE (CamelStore, camel_store, CAMEL_TYPE_SERVICE)
/**
* ignore_no_such_table_exception:
for (i=0;i<folders->len;i++) {
if (!CAMEL_IS_VTRASH_FOLDER(folders->pdata[i]))
camel_vee_folder_add_folder((CamelVeeFolder *)folder, (CamelFolder *)folders->pdata[i]);
- camel_object_unref (folders->pdata[i]);
+ g_object_unref (folders->pdata[i]);
}
g_ptr_array_free(folders, TRUE);
}
static void
-store_finalize (CamelStore *store)
+store_finalize (GObject *object)
{
+ CamelStore *store = CAMEL_STORE (object);
+
if (store->folders != NULL)
camel_object_bag_destroy (store->folders);
store->cdb_w = NULL;
}
- g_free (store->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_store_parent_class)->finalize (object);
+}
+
+static void
+store_constructed (GObject *object)
+{
+ CamelStore *store;
+ CamelStoreClass *class;
+
+ store = CAMEL_STORE (object);
+ class = CAMEL_STORE_GET_CLASS (store);
+
+ if (class->hash_folder_name != NULL)
+ store->folders = camel_object_bag_new (
+ class->hash_folder_name,
+ class->compare_folder_name,
+ (CamelCopyFunc) g_strdup, g_free);
+ else
+ store->folders = NULL;
}
static gboolean
/* Chain up to parent's construct() method. */
service_class = CAMEL_SERVICE_CLASS (camel_store_parent_class);
- if (!service_class->construct(service, session, provider, url, ex))
+ if (!service_class->construct (service, session, provider, url, ex))
return FALSE;
store_db_path = g_build_filename (service->url->path, CAMEL_DB_FILE, NULL);
ignore_no_such_table_exception (&x);
} else if (CAMEL_IS_VEE_FOLDER(folder))
camel_vee_folder_sync_headers(folder, NULL); /* Literally don't care of vfolder exceptions */
- camel_object_unref (folder);
+ g_object_unref (folder);
}
camel_exception_xfer(ex, &x);
static void
camel_store_class_init (CamelStoreClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
CamelServiceClass *service_class;
- camel_store_parent_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelStorePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = store_finalize;
+ object_class->constructed = store_constructed;
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = store_construct;
static void
camel_store_init (CamelStore *store)
{
- CamelStoreClass *store_class = CAMEL_STORE_GET_CLASS (store);
-
- if (store_class->hash_folder_name) {
- store->folders = camel_object_bag_new (
- store_class->hash_folder_name,
- store_class->compare_folder_name,
- (CamelCopyFunc) g_strdup, g_free);
- } else
- store->folders = NULL;
+ store->priv = CAMEL_STORE_GET_PRIVATE (store);
/* set vtrash and vjunk on by default */
store->flags = CAMEL_STORE_VTRASH | CAMEL_STORE_VJUNK;
store->mode = CAMEL_STORE_READ | CAMEL_STORE_WRITE;
- store->priv = g_malloc0 (sizeof (*store->priv));
g_static_rec_mutex_init (&store->priv->folder_lock);
}
-CamelType
-camel_store_get_type (void)
-{
- static CamelType camel_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_store_type == CAMEL_INVALID_TYPE) {
- camel_store_type = camel_type_register (CAMEL_SERVICE_TYPE, "CamelStore",
- sizeof (CamelStore),
- sizeof (CamelStoreClass),
- (CamelObjectClassInitFunc) camel_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_store_init,
- (CamelObjectFinalizeFunc) store_finalize );
- }
-
- return camel_store_type;
-}
-
/**
* camel_store_get_folder:
* @store: a #CamelStore object
_("Cannot create folder '%s': folder exists"),
folder_name);
camel_object_bag_abort (store->folders, folder_name);
- camel_object_unref (folder);
+ g_object_unref (folder);
return NULL;
}
}
if ((store->flags & CAMEL_STORE_VTRASH)
&& (vfolder = camel_object_bag_get(store->folders, CAMEL_VTRASH_NAME))) {
camel_vee_folder_add_folder(vfolder, folder);
- camel_object_unref (vfolder);
+ g_object_unref (vfolder);
}
if ((store->flags & CAMEL_STORE_VJUNK)
&& (vfolder = camel_object_bag_get(store->folders, CAMEL_VJUNK_NAME))) {
camel_vee_folder_add_folder(vfolder, folder);
- camel_object_unref (vfolder);
+ g_object_unref (vfolder);
}
}
}
if ((store->flags & CAMEL_STORE_VTRASH)
&& (vfolder = camel_object_bag_get(store->folders, CAMEL_VTRASH_NAME))) {
camel_vee_folder_remove_folder(vfolder, folder);
- camel_object_unref (vfolder);
+ g_object_unref (vfolder);
}
if ((store->flags & CAMEL_STORE_VJUNK)
&& (vfolder = camel_object_bag_get(store->folders, CAMEL_VJUNK_NAME))) {
camel_vee_folder_remove_folder(vfolder, folder);
- camel_object_unref (vfolder);
+ g_object_unref (vfolder);
}
camel_folder_delete(folder);
camel_object_bag_remove(store->folders, folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
}
camel_store_lock (store, CS_FOLDER_LOCK);
- success = class->delete_folder(store, folder_name, &local);
+ success = class->delete_folder (store, folder_name, &local);
/* ignore 'no such table' errors */
if (camel_exception_is_set (&local) && camel_exception_get_description (&local) &&
} else {
g_ptr_array_remove_index_fast(folders, i);
i--;
- camel_object_unref (folder);
+ g_object_unref (folder);
}
}
}
g_free(new);
camel_folder_unlock (folder, CF_REC_LOCK);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
/* Emit renamed signal */
for (i=0;i<folders->len;i++) {
folder = folders->pdata[i];
camel_folder_unlock (folder, CF_REC_LOCK);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
}
}
g_return_val_if_fail (class->get_inbox != NULL, NULL);
camel_store_lock (store, CS_FOLDER_LOCK);
+
folder = class->get_inbox (store, ex);
+
camel_store_unlock (store, CS_FOLDER_LOCK);
return folder;
g_return_val_if_fail (class->folder_subscribed != NULL, FALSE);
camel_store_lock (store, CS_FOLDER_LOCK);
+
ret = class->folder_subscribed (store, folder_name);
+
camel_store_unlock (store, CS_FOLDER_LOCK);
return ret;
g_return_val_if_fail (class->subscribe_folder != NULL, FALSE);
camel_store_lock (store, CS_FOLDER_LOCK);
+
success = class->subscribe_folder (store, folder_name, ex);
+
camel_store_unlock (store, CS_FOLDER_LOCK);
return success;
*
* Locks #store's #lock. Unlock it with camel_store_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_store_lock (CamelStore *store, CamelStoreLock lock)
+camel_store_lock (CamelStore *store,
+ CamelStoreLock lock)
{
- g_return_if_fail (store != NULL);
g_return_if_fail (CAMEL_IS_STORE (store));
- g_return_if_fail (store->priv != NULL);
switch (lock) {
- case CS_FOLDER_LOCK:
- g_static_rec_mutex_lock (&store->priv->folder_lock);
- break;
- default:
- g_return_if_reached ();
+ case CS_FOLDER_LOCK:
+ g_static_rec_mutex_lock (&store->priv->folder_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #store's #lock, previously locked with camel_store_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_store_unlock (CamelStore *store, CamelStoreLock lock)
+camel_store_unlock (CamelStore *store,
+ CamelStoreLock lock)
{
- g_return_if_fail (store != NULL);
g_return_if_fail (CAMEL_IS_STORE (store));
- g_return_if_fail (store->priv != NULL);
switch (lock) {
- case CS_FOLDER_LOCK:
- g_static_rec_mutex_unlock (&store->priv->folder_lock);
- break;
- default:
- g_return_if_reached ();
+ case CS_FOLDER_LOCK:
+ g_static_rec_mutex_unlock (&store->priv->folder_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-folder.h>
#include <camel/camel-service.h>
-#define CAMEL_STORE_TYPE (camel_store_get_type ())
-#define CAMEL_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STORE_TYPE, CamelStore))
-#define CAMEL_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STORE_TYPE, CamelStoreClass))
-#define CAMEL_IS_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_STORE \
+ (camel_store_get_type ())
+#define CAMEL_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STORE, CamelStore))
+#define CAMEL_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STORE, CamelStoreClass))
+#define CAMEL_IS_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STORE))
+#define CAMEL_IS_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STORE))
#define CAMEL_STORE_GET_CLASS(obj) \
- ((CamelStoreClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STORE, CamelStoreClass))
G_BEGIN_DECLS
CAMEL_STORE_ARG_FIRST = CAMEL_SERVICE_ARG_FIRST + 100
};
-typedef enum _CamelStoreLock {
+typedef enum {
CS_FOLDER_LOCK
} CamelStoreLock;
CamelException *ex);
};
-CamelType camel_store_get_type (void);
+GType camel_store_get_type (void);
CamelFolder * camel_store_get_folder (CamelStore *store,
const gchar *folder_name,
guint32 flags,
gboolean camel_store_can_refresh_folder (CamelStore *store,
CamelFolderInfo *info,
CamelException *ex);
-
-void camel_store_lock (CamelStore *store, CamelStoreLock lock);
-void camel_store_unlock (CamelStore *store, CamelStoreLock lock);
+void camel_store_lock (CamelStore *store,
+ CamelStoreLock lock);
+void camel_store_unlock (CamelStore *store,
+ CamelStoreLock lock);
G_END_DECLS
#include "camel-stream-buffer.h"
-static CamelStreamClass *parent_class = NULL;
+#define CAMEL_STREAM_BUFFER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_STREAM_BUFFER, CamelStreamBufferPrivate))
struct _CamelStreamBufferPrivate {
guint flags;
};
+G_DEFINE_TYPE (CamelStreamBuffer, camel_stream_buffer, CAMEL_TYPE_STREAM)
+
enum {
BUF_USER = 1<<0 /* user-supplied buffer, do not free */
};
{
CamelStreamBufferPrivate *priv;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
if (priv->buf && !(priv->flags & BUF_USER))
g_free (priv->buf);
}
static void
-stream_buffer_finalize (CamelStreamBuffer *stream_buffer)
+stream_buffer_dispose (GObject *object)
{
- CamelStreamBufferPrivate *priv = stream_buffer->priv;
+ CamelStreamBufferPrivate *priv;
+
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (object);
+
+ if (priv->stream != NULL) {
+ g_object_unref (priv->stream);
+ priv->stream = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_stream_buffer_parent_class)->dispose (object);
+}
+
+static void
+stream_buffer_finalize (GObject *object)
+{
+ CamelStreamBufferPrivate *priv;
+
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (object);
if (!(priv->flags & BUF_USER))
g_free (priv->buf);
- if (priv->stream)
- camel_object_unref (priv->stream);
-
g_free (priv->linebuf);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_stream_buffer_parent_class)->finalize (object);
}
static gssize
gssize bytes_left;
gchar *bptr = buffer;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
g_return_val_if_fail (
(priv->mode & CAMEL_STREAM_BUFFER_MODE) ==
gssize total = n;
gssize left, todo;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
g_return_val_if_fail (
(priv->mode & CAMEL_STREAM_BUFFER_MODE) ==
{
CamelStreamBufferPrivate *priv;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
if ((priv->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_WRITE) {
gsize len = priv->ptr - priv->buf;
{
CamelStreamBufferPrivate *priv;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
if (stream_buffer_flush (stream) == -1)
return -1;
{
CamelStreamBufferPrivate *priv;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
return camel_stream_eos(priv->stream) && priv->ptr == priv->end;
}
{
CamelStreamBufferPrivate *priv;
- priv = CAMEL_STREAM_BUFFER (stream)->priv;
+ priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
set_vbuf (stream, buf, mode, size);
- if (priv->stream)
- camel_object_unref (priv->stream);
+ if (priv->stream != NULL)
+ g_object_unref (priv->stream);
- priv->stream = camel_object_ref (other_stream);
+ priv->stream = g_object_ref (other_stream);
}
static void
static void
camel_stream_buffer_class_init (CamelStreamBufferClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelStreamBufferPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = stream_buffer_dispose;
+ object_class->finalize = stream_buffer_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_buffer_read;
static void
camel_stream_buffer_init (CamelStreamBuffer *stream)
{
- stream->priv = g_new0 (CamelStreamBufferPrivate, 1);
+ stream->priv = CAMEL_STREAM_BUFFER_GET_PRIVATE (stream);
stream->priv->flags = 0;
stream->priv->size = BUF_SIZE;
stream->priv->linebuf = g_malloc (stream->priv->linesize);
}
-CamelType
-camel_stream_buffer_get_type (void)
-{
- static CamelType camel_stream_buffer_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_buffer_type == CAMEL_INVALID_TYPE) {
- camel_stream_buffer_type = camel_type_register (camel_stream_get_type (), "CamelStreamBuffer",
- sizeof (CamelStreamBuffer),
- sizeof (CamelStreamBufferClass),
- (CamelObjectClassInitFunc) camel_stream_buffer_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_buffer_init,
- (CamelObjectFinalizeFunc) stream_buffer_finalize);
- }
-
- return camel_stream_buffer_type;
-}
-
/**
* camel_stream_buffer_new:
* @stream: a #CamelStream object to buffer
g_return_val_if_fail (CAMEL_IS_STREAM (stream), NULL);
- sbf = CAMEL_STREAM_BUFFER (camel_object_new (camel_stream_buffer_get_type ()));
+ sbf = g_object_new (CAMEL_TYPE_STREAM_BUFFER, NULL);
class = CAMEL_STREAM_BUFFER_GET_CLASS (sbf);
g_return_val_if_fail (class->init != NULL, NULL);
g_return_val_if_fail (CAMEL_IS_STREAM (stream), NULL);
g_return_val_if_fail (buf != NULL, NULL);
- sbf = CAMEL_STREAM_BUFFER (camel_object_new (camel_stream_buffer_get_type ()));
+ sbf = g_object_new (CAMEL_TYPE_STREAM_BUFFER, NULL);
class = CAMEL_STREAM_BUFFER_GET_CLASS (sbf);
g_return_val_if_fail (class->init_vbuf != NULL, NULL);
#include <stdio.h>
#include <camel/camel-seekable-stream.h>
-#define CAMEL_STREAM_BUFFER_TYPE (camel_stream_buffer_get_type ())
-#define CAMEL_STREAM_BUFFER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_BUFFER_TYPE, CamelStreamBuffer))
-#define CAMEL_STREAM_BUFFER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_BUFFER_TYPE, CamelStreamBufferClass))
-#define CAMEL_IS_STREAM_BUFFER(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_BUFFER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_BUFFER \
+ (camel_stream_buffer_get_type ())
+#define CAMEL_STREAM_BUFFER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_BUFFER, CamelStreamBuffer))
+#define CAMEL_STREAM_BUFFER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_BUFFER, CamelStreamBufferClass))
+#define CAMEL_IS_STREAM_BUFFER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_BUFFER))
+#define CAMEL_IS_STREAM_BUFFER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_BUFFER))
#define CAMEL_STREAM_BUFFER_GET_CLASS(obj) \
- ((CamelStreamBufferClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_BUFFER, CamelStreamBufferClass))
G_BEGIN_DECLS
guint32 size);
};
-CamelType camel_stream_buffer_get_type (void);
+GType camel_stream_buffer_get_type (void);
CamelStream * camel_stream_buffer_new (CamelStream *stream,
CamelStreamBufferMode mode);
CamelStream * camel_stream_buffer_new_with_vbuf
/*extern void g_check(gpointer mp);*/
#define g_check(x)
+#define CAMEL_STREAM_FILTER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_STREAM_FILTER, CamelStreamFilterPrivate))
+
struct _filter {
struct _filter *next;
gint id;
#define READ_PAD (128) /* bytes padded before buffer */
#define READ_SIZE (4096)
-static CamelStreamClass *camel_stream_filter_parent;
+G_DEFINE_TYPE (CamelStreamFilter, camel_stream_filter, CAMEL_TYPE_STREAM)
static void
-stream_filter_finalize (CamelStreamFilter *filter)
+stream_filter_finalize (GObject *object)
{
+ CamelStreamFilter *stream = CAMEL_STREAM_FILTER (object);
struct _filter *fn, *f;
- f = filter->priv->filters;
+ f = stream->priv->filters;
while (f) {
fn = f->next;
- camel_object_unref (f->filter);
+ g_object_unref (f->filter);
g_free (f);
f = fn;
}
- g_free (filter->priv->realbuffer);
- camel_object_unref (filter->priv->source);
- g_free (filter->priv);
+ g_free (stream->priv->realbuffer);
+ g_object_unref (stream->priv->source);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_stream_filter_parent_class)->finalize (object);
}
static gssize
gssize size;
struct _filter *f;
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
priv->last_was_read = TRUE;
gsize presize, len, left = n;
gchar *buffer, realbuffer[READ_SIZE+READ_PAD];
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
priv->last_was_read = FALSE;
gsize presize;
gsize len;
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
if (priv->last_was_read)
return 0;
{
CamelStreamFilterPrivate *priv;
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
if (!priv->last_was_read)
stream_filter_flush (stream);
{
CamelStreamFilterPrivate *priv;
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
if (priv->filteredlen > 0)
return FALSE;
CamelStreamFilterPrivate *priv;
struct _filter *f;
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
priv->filteredlen = 0;
priv->flushed = FALSE;
static void
camel_stream_filter_class_init (CamelStreamFilterClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- camel_stream_filter_parent = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelStreamFilterPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = stream_filter_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_filter_read;
static void
camel_stream_filter_init (CamelStreamFilter *stream)
{
- stream->priv = g_new0 (CamelStreamFilterPrivate, 1);
+ stream->priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
+
stream->priv->realbuffer = g_malloc(READ_SIZE + READ_PAD);
stream->priv->buffer = stream->priv->realbuffer + READ_PAD;
stream->priv->last_was_read = TRUE;
stream->priv->flushed = FALSE;
}
-CamelType
-camel_stream_filter_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_STREAM_TYPE, "CamelStreamFilter",
- sizeof (CamelStreamFilter),
- sizeof (CamelStreamFilterClass),
- (CamelObjectClassInitFunc) camel_stream_filter_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_filter_init,
- (CamelObjectFinalizeFunc) stream_filter_finalize);
- }
-
- return type;
-}
-
/**
* camel_stream_filter_new:
*
g_return_val_if_fail (CAMEL_IS_STREAM (source), NULL);
- stream = CAMEL_STREAM (camel_object_new (camel_stream_filter_get_type ()));
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ stream = g_object_new (CAMEL_TYPE_STREAM_FILTER, NULL);
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
- priv->source = camel_object_ref (source);
+ priv->source = g_object_ref (source);
return stream;
}
g_return_val_if_fail (CAMEL_IS_STREAM_FILTER (stream), -1);
g_return_val_if_fail (CAMEL_IS_MIME_FILTER (filter), -1);
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
fn = g_malloc(sizeof(*fn));
fn->id = priv->filterid++;
- fn->filter = camel_object_ref (filter);
+ fn->filter = g_object_ref (filter);
/* sure, we could use a GList, but we wouldn't save much */
f = (struct _filter *)&priv->filters;
g_return_if_fail (CAMEL_IS_STREAM_FILTER (stream));
- priv = CAMEL_STREAM_FILTER (stream)->priv;
+ priv = CAMEL_STREAM_FILTER_GET_PRIVATE (stream);
f = (struct _filter *)&priv->filters;
while (f && f->next) {
fn = f->next;
if (fn->id == id) {
f->next = fn->next;
- camel_object_unref (fn->filter);
+ g_object_unref (fn->filter);
g_free(fn);
}
f = f->next;
#include <camel/camel-stream.h>
#include <camel/camel-mime-filter.h>
-#define CAMEL_STREAM_FILTER(obj) CAMEL_CHECK_CAST (obj, camel_stream_filter_get_type (), CamelStreamFilter)
-#define CAMEL_STREAM_FILTER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_stream_filter_get_type (), CamelStreamFilterClass)
-#define CAMEL_IS_STREAM_FILTER(obj) CAMEL_CHECK_TYPE (obj, camel_stream_filter_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_FILTER \
+ (camel_stream_filter_get_type ())
+#define CAMEL_STREAM_FILTER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_FILTER, CamelStreamFilter))
+#define CAMEL_STREAM_FILTER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_FILTER, CamelStreamFilterClass))
+#define CAMEL_IS_STREAM_FILTER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_FILTER))
+#define CAMEL_IS_STREAM_FILTER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_FILTER))
+#define CAMEL_STREAM_FILTER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_FILTER, CamelStreamFilterClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_stream_filter_get_type (void);
-CamelStream * camel_stream_filter_new (CamelStream *stream);
+GType camel_stream_filter_get_type (void);
+CamelStream * camel_stream_filter_new (CamelStream *source);
CamelStream * camel_stream_filter_get_source (CamelStreamFilter *stream);
gint camel_stream_filter_add (CamelStreamFilter *stream,
CamelMimeFilter *filter);
#include "camel-stream-fs.h"
#include "camel-win32.h"
+#define CAMEL_STREAM_FS_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_STREAM_FS, CamelStreamFsPrivate))
+
struct _CamelStreamFsPrivate {
gint fd; /* file descriptor on the underlying file */
};
-static CamelSeekableStreamClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelStreamFs, camel_stream_fs, CAMEL_TYPE_SEEKABLE_STREAM)
static void
-camel_stream_fs_finalize (CamelStreamFs *stream_fs)
+stream_fs_finalize (GObject *object)
{
- CamelStreamFsPrivate *priv = stream_fs->priv;
+ CamelStreamFsPrivate *priv;
+
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (object);
if (priv->fd != -1)
close (priv->fd);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_stream_fs_parent_class)->finalize (object);
}
static gssize
CamelSeekableStream *seekable;
gssize nread;
- priv = CAMEL_STREAM_FS (stream)->priv;
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
seekable = CAMEL_SEEKABLE_STREAM (stream);
if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
CamelSeekableStream *seekable;
gssize nwritten;
- priv = CAMEL_STREAM_FS (stream)->priv;
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
seekable = CAMEL_SEEKABLE_STREAM (stream);
if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
{
CamelStreamFsPrivate *priv;
- priv = CAMEL_STREAM_FS (stream)->priv;
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
return fsync (priv->fd);
}
{
CamelStreamFsPrivate *priv;
- priv = CAMEL_STREAM_FS (stream)->priv;
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
if (close (priv->fd) == -1)
return -1;
CamelStreamFsPrivate *priv;
off_t real = 0;
- priv = CAMEL_STREAM_FS (stream)->priv;
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
switch (policy) {
case CAMEL_STREAM_SET:
static void
camel_stream_fs_class_init (CamelStreamFsClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
CamelSeekableStreamClass *seekable_stream_class;
- parent_class = CAMEL_SEEKABLE_STREAM_CLASS (camel_type_get_global_classfuncs (camel_seekable_stream_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelStreamFsPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = stream_fs_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_fs_read;
static void
camel_stream_fs_init (CamelStreamFs *stream)
{
- stream->priv = g_new0 (CamelStreamFsPrivate, 1);
+ stream->priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
stream->priv->fd = -1;
CAMEL_SEEKABLE_STREAM (stream)->bound_end = CAMEL_STREAM_UNBOUND;
}
-CamelType
-camel_stream_fs_get_type (void)
-{
- static CamelType camel_stream_fs_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_fs_type == CAMEL_INVALID_TYPE) {
- camel_stream_fs_type = camel_type_register (camel_seekable_stream_get_type (), "CamelStreamFs",
- sizeof (CamelStreamFs),
- sizeof (CamelStreamFsClass),
- (CamelObjectClassInitFunc) camel_stream_fs_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_fs_init,
- (CamelObjectFinalizeFunc) camel_stream_fs_finalize);
- }
-
- return camel_stream_fs_type;
-}
-
/**
* camel_stream_fs_new_with_fd:
* @fd: a file descriptor
if (fd == -1)
return NULL;
- stream = CAMEL_STREAM (camel_object_new (camel_stream_fs_get_type ()));
- priv = CAMEL_STREAM_FS (stream)->priv;
+ stream = g_object_new (CAMEL_TYPE_STREAM_FS, NULL);
+ priv = CAMEL_STREAM_FS_GET_PRIVATE (stream);
priv->fd = fd;
offset = lseek (fd, 0, SEEK_CUR);
#include <camel/camel-seekable-stream.h>
-#define CAMEL_STREAM_FS_TYPE (camel_stream_fs_get_type ())
-#define CAMEL_STREAM_FS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_FS_TYPE, CamelStreamFs))
-#define CAMEL_STREAM_FS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_FS_TYPE, CamelStreamFsClass))
-#define CAMEL_IS_STREAM_FS(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_FS_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_FS \
+ (camel_stream_fs_get_type ())
+#define CAMEL_STREAM_FS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_FS, CamelStreamFs))
+#define CAMEL_STREAM_FS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_FS, CamelStreamFsClass))
+#define CAMEL_IS_STREAM_FS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_FS))
+#define CAMEL_IS_STREAM_FS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_FS))
+#define CAMEL_STREAM_FS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_FS, CamelStreamFsClass))
G_BEGIN_DECLS
CamelSeekableStreamClass parent_class;
};
-CamelType camel_stream_fs_get_type (void);
+GType camel_stream_fs_get_type (void);
CamelStream * camel_stream_fs_new_with_name (const gchar *name,
gint flags,
mode_t mode);
#include "camel-stream-mem.h"
-static CamelSeekableStreamClass *parent_class = NULL;
+#define CAMEL_STREAM_MEM_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_STREAM_MEM, CamelStreamMemPrivate))
struct _CamelStreamMemPrivate {
guint owner : 1; /* do we own the buffer? */
GByteArray *buffer;
};
+G_DEFINE_TYPE (CamelStreamMem, camel_stream_mem, CAMEL_TYPE_SEEKABLE_STREAM)
+
/* could probably be a util method */
static void
clear_mem (gpointer p, gsize len)
}
static void
-camel_stream_mem_finalize (CamelStreamMem *stream)
+stream_mem_finalize (GObject *object)
{
- CamelStreamMemPrivate *priv = stream->priv;
+ CamelStreamMemPrivate *priv;
+
+ priv = CAMEL_STREAM_MEM_GET_PRIVATE (object);
if (priv->buffer && priv->owner) {
/* TODO: we need our own bytearray type since we don't know
g_byte_array_free (priv->buffer, TRUE);
}
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_stream_mem_parent_class)->finalize (object);
}
static gssize
CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
gssize nread;
- priv = CAMEL_STREAM_MEM (stream)->priv;
+ priv = CAMEL_STREAM_MEM_GET_PRIVATE (stream);
if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
n = MIN(seekable->bound_end - seekable->position, n);
CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
gssize nwrite = n;
- priv = CAMEL_STREAM_MEM (stream)->priv;
+ priv = CAMEL_STREAM_MEM_GET_PRIVATE (stream);
if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
nwrite = MIN(seekable->bound_end - seekable->position, n);
CamelStreamMemPrivate *priv;
CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM (stream);
- priv = CAMEL_STREAM_MEM (stream)->priv;
+ priv = CAMEL_STREAM_MEM_GET_PRIVATE (stream);
return priv->buffer->len <= seekable_stream->position;
}
CamelStreamMemPrivate *priv;
off_t position;
- priv = CAMEL_STREAM_MEM (stream)->priv;
+ priv = CAMEL_STREAM_MEM_GET_PRIVATE (stream);
switch (policy) {
case CAMEL_STREAM_SET:
static void
camel_stream_mem_class_init (CamelStreamMemClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
CamelSeekableStreamClass *seekable_stream_class;
- parent_class = CAMEL_SEEKABLE_STREAM_CLASS( camel_type_get_global_classfuncs( CAMEL_SEEKABLE_STREAM_TYPE ) );
+ g_type_class_add_private (class, sizeof (CamelStreamMemPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = stream_mem_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_mem_read;
static void
camel_stream_mem_init (CamelStreamMem *stream)
{
- stream->priv = g_new0 (CamelStreamMemPrivate, 1);
-}
-
-CamelType
-camel_stream_mem_get_type (void)
-{
- static CamelType camel_stream_mem_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_mem_type == CAMEL_INVALID_TYPE) {
- camel_stream_mem_type = camel_type_register( CAMEL_SEEKABLE_STREAM_TYPE,
- "CamelStreamMem",
- sizeof( CamelStreamMem ),
- sizeof( CamelStreamMemClass ),
- (CamelObjectClassInitFunc) camel_stream_mem_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_mem_init,
- (CamelObjectFinalizeFunc) camel_stream_mem_finalize );
- }
-
- return camel_stream_mem_type;
+ stream->priv = CAMEL_STREAM_MEM_GET_PRIVATE (stream);
}
/**
g_return_val_if_fail (buffer != NULL, NULL);
- stream = CAMEL_STREAM (camel_object_new (CAMEL_STREAM_MEM_TYPE));
- priv = CAMEL_STREAM_MEM (stream)->priv;
+ stream = g_object_new (CAMEL_TYPE_STREAM_MEM, NULL);
+ priv = CAMEL_STREAM_MEM_GET_PRIVATE (stream);
priv->buffer = buffer;
priv->owner = TRUE;
#include <sys/types.h>
#include <camel/camel-seekable-stream.h>
-#define CAMEL_STREAM_MEM_TYPE (camel_stream_mem_get_type ())
-#define CAMEL_STREAM_MEM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_MEM_TYPE, CamelStreamMem))
-#define CAMEL_STREAM_MEM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_MEM_TYPE, CamelStreamMemClass))
-#define CAMEL_IS_STREAM_MEM(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_MEM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_MEM \
+ (camel_stream_mem_get_type ())
+#define CAMEL_STREAM_MEM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_MEM, CamelStreamMem))
+#define CAMEL_STREAM_MEM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_MEM, CamelStreamMemClass))
+#define CAMEL_IS_STREAM_MEM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_MEM))
+#define CAMEL_IS_STREAM_MEM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_MEM))
+#define CAMEL_STREAM_MEM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_MEM, CamelStreamMemClass))
G_BEGIN_DECLS
CamelSeekableStreamClass parent_class;
};
-CamelType camel_stream_mem_get_type (void);
+GType camel_stream_mem_get_type (void);
CamelStream * camel_stream_mem_new (void);
CamelStream * camel_stream_mem_new_with_byte_array
(GByteArray *buffer);
#include "camel-stream-null.h"
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelStreamNull, camel_stream_null, CAMEL_TYPE_STREAM)
static gssize
stream_null_write (CamelStream *stream,
{
CamelStreamClass *stream_class;
- parent_class = camel_type_get_global_classfuncs( CAMEL_TYPE_OBJECT );
-
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->write = stream_null_write;
stream_class->eos = stream_null_eos;
{
}
-CamelType
-camel_stream_null_get_type (void)
-{
- static CamelType camel_stream_null_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_null_type == CAMEL_INVALID_TYPE) {
- camel_stream_null_type = camel_type_register( camel_stream_get_type(),
- "CamelStreamNull",
- sizeof( CamelStreamNull ),
- sizeof( CamelStreamNullClass ),
- (CamelObjectClassInitFunc) camel_stream_null_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_null_init,
- NULL );
- }
-
- return camel_stream_null_type;
-}
-
/**
* camel_stream_null_new:
*
CamelStream *
camel_stream_null_new(void)
{
- return (CamelStream *)camel_object_new(camel_stream_null_get_type ());
+ return g_object_new (CAMEL_TYPE_STREAM_NULL, NULL);
}
#include <camel/camel-stream.h>
-#define CAMEL_STREAM_NULL(obj) CAMEL_CHECK_CAST (obj, camel_stream_null_get_type (), CamelStreamNull)
-#define CAMEL_STREAM_NULL_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_stream_null_get_type (), CamelStreamNullClass)
-#define CAMEL_IS_STREAM_NULL(obj) CAMEL_CHECK_TYPE (obj, camel_stream_null_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_NULL \
+ (camel_stream_null_get_type ())
+#define CAMEL_STREAM_NULL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_NULL, CamelStreamNull))
+#define CAMEL_STREAM_NULL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_NULL, CamelStreamNullClass))
+#define CAMEL_IS_STREAM_NULL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_NULL))
+#define CAMEL_IS_STREAM_NULL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_NULL))
+#define CAMEL_STREAM_NULL_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_NULL, CamelStreamNullClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_stream_null_get_type (void);
+GType camel_stream_null_get_type (void);
CamelStream *camel_stream_null_new (void);
extern gint camel_verbose_debug;
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelStreamProcess, camel_stream_process, CAMEL_TYPE_STREAM)
static void
-stream_process_finalize (CamelObject *object)
+stream_process_finalize (GObject *object)
{
/* Ensure we clean up after ourselves -- kill
the child process and reap it. */
camel_stream_close (CAMEL_STREAM (object));
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_stream_process_parent_class)->finalize (object);
}
static gssize
static void
camel_stream_process_class_init (CamelStreamProcessClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- parent_class = camel_type_get_global_classfuncs (CAMEL_TYPE_OBJECT);
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = stream_process_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_process_read;
stream->childpid = 0;
}
-CamelType
-camel_stream_process_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_stream_get_type (),
- "CamelStreamProcess",
- sizeof (CamelStreamProcess),
- sizeof (CamelStreamProcessClass),
- (CamelObjectClassInitFunc) camel_stream_process_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_process_init,
- (CamelObjectFinalizeFunc) stream_process_finalize);
- }
-
- return type;
-}
-
/**
* camel_stream_process_new:
*
CamelStream *
camel_stream_process_new (void)
{
- return (CamelStream *) camel_object_new (camel_stream_process_get_type ());
+ return g_object_new (CAMEL_TYPE_STREAM_PROCESS, NULL);
}
G_GNUC_NORETURN static void
#include <camel/camel-stream.h>
-#define CAMEL_STREAM_PROCESS(obj) CAMEL_CHECK_CAST (obj, camel_stream_process_get_type (), CamelStreamProcess)
-#define CAMEL_STREAM_PROCESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_stream_process_get_type (), CamelStreamProcessClass)
-#define CAMEL_IS_STREAM_PROCESS(obj) CAMEL_CHECK_TYPE (obj, camel_stream_process_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_PROCESS \
+ (camel_stream_process_get_type ())
+#define CAMEL_STREAM_PROCESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_PROCESS, CamelStreamProcess))
+#define CAMEL_STREAM_PROCESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_PROCESS, CamelStreamProcessClass))
+#define CAMEL_IS_STREAM_PROCESS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_PROCESS))
+#define CAMEL_IS_STREAM_PROCESS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_PROCESS))
+#define CAMEL_STREAM_PROCESS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_PROCSS, CamelStreamProcessClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_stream_process_get_type (void);
+GType camel_stream_process_get_type (void);
CamelStream * camel_stream_process_new (void);
gint camel_stream_process_connect (CamelStreamProcess *stream,
const gchar *command,
#include "camel-operation.h"
#include "camel-stream-vfs.h"
-static CamelStreamClass *parent_class = NULL;
-
+G_DEFINE_TYPE (CamelStreamVFS, camel_stream_vfs, CAMEL_TYPE_STREAM)
static void
-stream_vfs_finalize (CamelStreamVFS *stream_vfs)
+stream_vfs_dispose (GObject *object)
{
- if (stream_vfs->stream)
- g_object_unref (stream_vfs->stream);
+ CamelStreamVFS *stream = CAMEL_STREAM_VFS (object);
+
+ if (stream->stream != NULL) {
+ g_object_unref (stream->stream);
+ stream->stream = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_stream_vfs_parent_class)->dispose (object);
}
static gssize
static void
camel_stream_vfs_class_init (CamelStreamVFSClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = stream_vfs_dispose;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_vfs_read;
stream->stream = NULL;
}
-CamelType
-camel_stream_vfs_get_type (void)
-{
- static CamelType camel_stream_vfs_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_vfs_type == CAMEL_INVALID_TYPE) {
- camel_stream_vfs_type = camel_type_register (camel_stream_get_type (), "CamelStreamVFS",
- sizeof (CamelStreamVFS),
- sizeof (CamelStreamVFSClass),
- (CamelObjectClassInitFunc) camel_stream_vfs_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_vfs_init,
- (CamelObjectFinalizeFunc) stream_vfs_finalize);
- }
-
- return camel_stream_vfs_type;
-}
-
/**
* camel_stream_vfs_new_with_stream:
* @stream: a GInputStream or GOutputStream instance
g_return_val_if_fail (G_IS_OUTPUT_STREAM (stream) || G_IS_INPUT_STREAM (stream), NULL);
errno = 0;
- stream_vfs = CAMEL_STREAM_VFS (camel_object_new (camel_stream_vfs_get_type ()));
+ stream_vfs = g_object_new (CAMEL_TYPE_STREAM_VFS, NULL);
stream_vfs->stream = stream;
return CAMEL_STREAM (stream_vfs);
#ifndef CAMEL_STREAM_VFS_H
#define CAMEL_STREAM_VFS_H
-#include <glib-object.h>
#include <camel/camel-stream.h>
-#define CAMEL_STREAM_VFS_TYPE (camel_stream_vfs_get_type ())
-#define CAMEL_STREAM_VFS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_VFS_TYPE, CamelStreamVFS))
-#define CAMEL_STREAM_VFS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_VFS_TYPE, CamelStreamVFSClass))
-#define CAMEL_IS_STREAM_VFS(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_VFS_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM_VFS \
+ (camel_stream_vfs_get_type ())
+#define CAMEL_STREAM_VFS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM_VFS, CamelStreamVFS))
+#define CAMEL_STREAM_VFS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM_VFS, CamelStreamVFSClass))
+#define CAMEL_IS_STREAM_VFS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM_VFS))
+#define CAMEL_IS_STREAM_VFS_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM_VFS))
+#define CAMEL_STREAM_VFS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM_VFS, CamelStreamVFSClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_stream_vfs_get_type (void);
+GType camel_stream_vfs_get_type (void);
/**
* CamelStreamVFSOpenMethod:
#include "camel-stream.h"
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_ABSTRACT_TYPE (CamelStream, camel_stream, CAMEL_TYPE_OBJECT)
static gssize
stream_read (CamelStream *stream,
static void
camel_stream_class_init (CamelStreamClass *class)
{
- parent_class = camel_type_get_global_classfuncs( CAMEL_TYPE_OBJECT );
-
class->read = stream_read;
class->write = stream_write;
class->close = stream_close;
{
}
-CamelType
-camel_stream_get_type (void)
-{
- static CamelType camel_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_type == CAMEL_INVALID_TYPE) {
- camel_stream_type = camel_type_register( CAMEL_TYPE_OBJECT,
- "CamelStream",
- sizeof( CamelStream ),
- sizeof( CamelStreamClass ),
- (CamelObjectClassInitFunc) camel_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_init,
- NULL );
- }
-
- return camel_stream_type;
-}
-
/**
* camel_stream_read:
* @stream: a #CamelStream object.
* Returns: the number of characters written or %-1 on error.
**/
gssize
-camel_stream_write_string (CamelStream *stream, const gchar *string)
+camel_stream_write_string (CamelStream *stream,
+ const gchar *string)
{
return camel_stream_write (stream, string, strlen (string));
}
* Returns: the number of characters written or %-1 on error.
**/
gssize
-camel_stream_printf (CamelStream *stream, const gchar *fmt, ... )
+camel_stream_printf (CamelStream *stream,
+ const gchar *fmt,
+ ...)
{
va_list args;
gchar *string;
#include <unistd.h>
#include <camel/camel-object.h>
-#define CAMEL_STREAM_TYPE (camel_stream_get_type ())
-#define CAMEL_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_TYPE, CamelStream))
-#define CAMEL_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_TYPE, CamelStreamClass))
-#define CAMEL_IS_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_STREAM \
+ (camel_stream_get_type ())
+#define CAMEL_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_STREAM, CamelStream))
+#define CAMEL_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_STREAM, CamelStreamClass))
+#define CAMEL_IS_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_STREAM))
+#define CAMEL_IS_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_STREAM))
#define CAMEL_STREAM_GET_CLASS(obj) \
- ((CamelStreamClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_STREAM, CamelStreamClass))
G_BEGIN_DECLS
gint (*reset) (CamelStream *stream);
};
-CamelType camel_stream_get_type (void);
+GType camel_stream_get_type (void);
gssize camel_stream_read (CamelStream *stream,
gchar *buffer,
gsize n);
#undef ETIMEDOUT
#endif
#define ETIMEDOUT EAGAIN
-
#endif
-static CamelTcpStreamClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelTcpStreamRaw, camel_tcp_stream_raw, CAMEL_TYPE_TCP_STREAM)
#ifdef SIMULATE_FLAKY_NETWORK
static gssize
}
static void
-tcp_stream_raw_finalize (CamelTcpStreamRaw *stream)
+tcp_stream_raw_finalize (GObject *object)
{
+ CamelTcpStreamRaw *stream = CAMEL_TCP_STREAM_RAW (object);
+
if (stream->sockfd != -1)
SOCKET_CLOSE (stream->sockfd);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_tcp_stream_raw_parent_class)->finalize (object);
}
static gssize
static void
camel_tcp_stream_raw_class_init (CamelTcpStreamRawClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
CamelTcpStreamClass *tcp_stream_class;
- parent_class = CAMEL_TCP_STREAM_CLASS (camel_type_get_global_classfuncs (camel_tcp_stream_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = tcp_stream_raw_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = tcp_stream_raw_read;
stream->sockfd = -1;
}
-CamelType
-camel_tcp_stream_raw_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_tcp_stream_get_type (),
- "CamelTcpStreamRaw",
- sizeof (CamelTcpStreamRaw),
- sizeof (CamelTcpStreamRawClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_raw_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_raw_init,
- (CamelObjectFinalizeFunc) tcp_stream_raw_finalize);
- }
-
- return type;
-}
-
/**
* camel_tcp_stream_raw_new:
*
CamelStream *
camel_tcp_stream_raw_new (void)
{
- return CAMEL_STREAM (camel_object_new (camel_tcp_stream_raw_get_type ()));
+ return g_object_new (CAMEL_TYPE_TCP_STREAM_RAW, NULL);
}
#include <camel/camel-tcp-stream.h>
-#define CAMEL_TCP_STREAM_RAW_TYPE (camel_tcp_stream_raw_get_type ())
-#define CAMEL_TCP_STREAM_RAW(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_RAW_TYPE, CamelTcpStreamRaw))
-#define CAMEL_TCP_STREAM_RAW_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_RAW_TYPE, CamelTcpStreamRawClass))
-#define CAMEL_IS_TCP_STREAM_RAW(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_RAW_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_TCP_STREAM_RAW \
+ (camel_tcp_stream_raw_get_type ())
+#define CAMEL_TCP_STREAM_RAW(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TCP_STREAM_RAW, CamelTcpStreamRaw))
+#define CAMEL_TCP_STREAM_RAW_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TCP_STREAM_RAW, CamelTcpStreamRawClass))
+#define CAMEL_IS_TCP_STREAM_RAW(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TCP_STREAM_RAW))
+#define CAMEL_IS_TCP_STREAM_RAW_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TCP_STREAM_RAW))
+#define CAMEL_TCP_STREAM_RAW_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TCP_STREAM_RAW, CAmelTcpStreamRawClass))
G_BEGIN_DECLS
CamelTcpStreamClass parent_class;
};
-CamelType camel_tcp_stream_raw_get_type (void);
+GType camel_tcp_stream_raw_get_type (void);
/* public methods */
CamelStream *camel_tcp_stream_raw_new (void);
#define IO_TIMEOUT (PR_TicksPerSecond() * 4 * 60)
#define CONNECT_TIMEOUT (PR_TicksPerSecond () * 4 * 60)
-static CamelTcpStreamClass *parent_class = NULL;
+#define CAMEL_TCP_STREAM_SSL_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_TCP_STREAM_SSL, CamelTcpStreamSSLPrivate))
struct _CamelTcpStreamSSLPrivate {
PRFileDesc *sockfd;
guint32 flags;
};
+G_DEFINE_TYPE (CamelTcpStreamSSL, camel_tcp_stream_ssl, CAMEL_TYPE_TCP_STREAM)
static void
set_errno (gint code)
}
static void
-tcp_stream_ssl_finalize (CamelTcpStreamSSL *stream)
+tcp_stream_ssl_dispose (GObject *object)
{
- CamelTcpStreamSSLPrivate *priv = stream->priv;
+ CamelTcpStreamSSLPrivate *priv;
+
+ priv = CAMEL_TCP_STREAM_SSL_GET_PRIVATE (object);
+
+ if (priv->session != NULL) {
+ g_object_unref (priv->session);
+ priv->session = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_tcp_stream_ssl_parent_class)->dispose (object);
+}
+
+static void
+tcp_stream_ssl_finalize (GObject *object)
+{
+ CamelTcpStreamSSLPrivate *priv;
+
+ priv = CAMEL_TCP_STREAM_SSL_GET_PRIVATE (object);
if (priv->sockfd != NULL) {
PR_Shutdown (priv->sockfd, PR_SHUTDOWN_BOTH);
PR_Close (priv->sockfd);
}
- if (priv->session)
- camel_object_unref (priv->session);
-
g_free (priv->expected_host);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_tcp_stream_ssl_parent_class)->finalize (object);
}
-
static gssize
tcp_stream_ssl_read (CamelStream *stream,
gchar *buffer,
g_unlink (path);
}
camel_stream_close (stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
} else {
g_warning ("Could not save cert: %s: %s", path, g_strerror (errno));
}
}
camel_certdb_cert_unref(certdb, ccert);
- camel_object_unref (certdb);
+ g_object_unref (certdb);
return accept ? SECSuccess : SECFailure;
static void
camel_tcp_stream_ssl_class_init (CamelTcpStreamSSLClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
CamelTcpStreamClass *tcp_stream_class;
- parent_class = CAMEL_TCP_STREAM_CLASS (camel_type_get_global_classfuncs (camel_tcp_stream_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelTcpStreamSSLPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = tcp_stream_ssl_dispose;
+ object_class->finalize = tcp_stream_ssl_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = tcp_stream_ssl_read;
static void
camel_tcp_stream_ssl_init (CamelTcpStreamSSL *stream)
{
- stream->priv = g_new0 (CamelTcpStreamSSLPrivate, 1);
-}
-
-CamelType
-camel_tcp_stream_ssl_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_tcp_stream_get_type (),
- "CamelTcpStreamSSL",
- sizeof (CamelTcpStreamSSL),
- sizeof (CamelTcpStreamSSLClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_ssl_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_ssl_init,
- (CamelObjectFinalizeFunc) tcp_stream_ssl_finalize);
- }
-
- return type;
+ stream->priv = CAMEL_TCP_STREAM_SSL_GET_PRIVATE (stream);
}
/**
g_assert(CAMEL_IS_SESSION(session));
- stream = CAMEL_TCP_STREAM_SSL (camel_object_new (camel_tcp_stream_ssl_get_type ()));
+ stream = g_object_new (CAMEL_TYPE_TCP_STREAM_SSL, NULL);
- stream->priv->session = camel_object_ref (session);
+ stream->priv->session = g_object_ref (session);
stream->priv->expected_host = g_strdup (expected_host);
stream->priv->ssl_mode = TRUE;
stream->priv->flags = flags;
g_assert(CAMEL_IS_SESSION(session));
- stream = CAMEL_TCP_STREAM_SSL (camel_object_new (camel_tcp_stream_ssl_get_type ()));
+ stream = g_object_new (CAMEL_TYPE_TCP_STREAM_SSL, NULL);
- stream->priv->session = camel_object_ref (session);
+ stream->priv->session = g_object_ref (session);
stream->priv->expected_host = g_strdup (expected_host);
stream->priv->ssl_mode = FALSE;
stream->priv->flags = flags;
#include <camel/camel-tcp-stream.h>
#include <prio.h>
-#define CAMEL_TCP_STREAM_SSL_TYPE (camel_tcp_stream_ssl_get_type ())
-#define CAMEL_TCP_STREAM_SSL(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_SSL_TYPE, CamelTcpStreamSSL))
-#define CAMEL_TCP_STREAM_SSL_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_SSL_TYPE, CamelTcpStreamSSLClass))
-#define CAMEL_IS_TCP_STREAM_SSL(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_SSL_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_TCP_STREAM_SSL \
+ (camel_tcp_stream_ssl_get_type ())
+#define CAMEL_TCP_STREAM_SSL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TCP_STREAM_SSL, CamelTcpStreamSSL))
+#define CAMEL_TCP_STREAM_SSL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TCP_STREAM_SSL, CamelTcpStreamSSLClass))
+#define CAMEL_IS_TCP_STREAM_SSL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TCP_STREAM_SSL))
+#define CAMEL_IS_TCP_STREAM_SSL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TCP_STREAM_SSL))
+#define CAMEL_TCP_STREAM_SSL_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TCP_STREAM_SSL, CamelTcpStreamSSLClass))
#define CAMEL_TCP_STREAM_SSL_ENABLE_SSL2 (1 << 0)
#define CAMEL_TCP_STREAM_SSL_ENABLE_SSL3 (1 << 1)
CamelTcpStreamClass parent_class;
};
-CamelType camel_tcp_stream_ssl_get_type (void);
+GType camel_tcp_stream_ssl_get_type (void);
/* public methods */
CamelStream *camel_tcp_stream_ssl_new (struct _CamelSession *session, const gchar *expected_host, guint32 flags);
#define w(x)
-static CamelStreamClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelTcpStream, camel_tcp_stream, CAMEL_TYPE_STREAM)
static void
camel_tcp_stream_class_init (CamelTcpStreamClass *class)
{
- parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (CAMEL_STREAM_TYPE));
}
static void
{
}
-CamelType
-camel_tcp_stream_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_STREAM_TYPE,
- "CamelTcpStream",
- sizeof (CamelTcpStream),
- sizeof (CamelTcpStreamClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_tcp_stream_connect:
* @stream: a #CamelTcpStream object
#include <camel/camel-stream.h>
-#define CAMEL_TCP_STREAM_TYPE (camel_tcp_stream_get_type ())
-#define CAMEL_TCP_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_TYPE, CamelTcpStream))
-#define CAMEL_TCP_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_TYPE, CamelTcpStreamClass))
-#define CAMEL_IS_TCP_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_TCP_STREAM \
+ (camel_tcp_stream_get_type ())
+#define CAMEL_TCP_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TCP_STREAM, CamelTcpStream))
+#define CAMEL_TCP_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TCP_STREAM, CamelTcpStreamClass))
+#define CAMEL_IS_TCP_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TCP_STREAM))
+#define CAMEL_IS_TCP_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TCP_STREAM))
#define CAMEL_TCP_STREAM_GET_CLASS(obj) \
- ((CamelTcpStreamClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TCP_STREAM, CamelTcpStreamClass))
G_BEGIN_DECLS
socklen_t *len);
};
-CamelType camel_tcp_stream_get_type (void);
+GType camel_tcp_stream_get_type (void);
gint camel_tcp_stream_connect (CamelTcpStream *stream,
struct addrinfo *host);
gint camel_tcp_stream_getsockopt (CamelTcpStream *stream,
/* ********************************************************************** */
+#define CAMEL_TEXT_INDEX_NAME_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_NAME, CamelTextIndexNamePrivate))
+
struct _CamelTextIndexNamePrivate {
GString *buffer;
camel_key_t nameid;
/* ****************************** */
+#define CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_CURSOR, CamelTextIndexCursorPrivate))
+
struct _CamelTextIndexCursorPrivate {
camel_block_t first;
camel_block_t next;
/* ****************************** */
+#define CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR, CamelTextIndexKeyCursorPrivate))
+
struct _CamelTextIndexKeyCursorPrivate {
CamelKeyTable *table;
#define CAMEL_TEXT_INDEX_VERSION "TEXT.000"
#define CAMEL_TEXT_INDEX_KEY_VERSION "KEYS.000"
+#define CAMEL_TEXT_INDEX_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX, CamelTextIndexPrivate))
+
struct _CamelTextIndexPrivate {
CamelBlockFile *blocks;
CamelKeyFile *links;
camel_key_t names[32];
};
-#define CAMEL_TEXT_INDEX_GET_PRIVATE(o) (((CamelTextIndex *)(o))->priv)
-
-#define CI_CLASS(o) ((CamelTextIndexClass *)(((CamelObject *)o)->classfuncs))
-
/* ********************************************************************** */
/* CamelTextIndex */
/* ********************************************************************** */
-static CamelObjectClass *camel_text_index_parent;
+G_DEFINE_TYPE (CamelTextIndex, camel_text_index, CAMEL_TYPE_INDEX)
+
+static void
+text_index_dispose (GObject *object)
+{
+ CamelTextIndexPrivate *priv;
+
+ priv = CAMEL_TEXT_INDEX_GET_PRIVATE (object);
+
+ /* Only run this the first time. */
+ if (priv->word_index != NULL)
+ camel_index_sync (CAMEL_INDEX (object));
+
+ if (priv->word_index != NULL) {
+ g_object_unref (priv->word_index);
+ priv->word_index = NULL;
+ }
+
+ if (priv->word_hash != NULL) {
+ g_object_unref (priv->word_hash);
+ priv->word_hash = NULL;
+ }
+
+ if (priv->name_index != NULL) {
+ g_object_unref (priv->name_index);
+ priv->name_index = NULL;
+ }
+
+ if (priv->name_hash != NULL) {
+ g_object_unref (priv->name_hash);
+ priv->name_hash = NULL;
+ }
+
+ if (priv->blocks != NULL) {
+ g_object_unref (priv->blocks);
+ priv->blocks = NULL;
+ }
+
+ if (priv->links != NULL) {
+ g_object_unref (priv->links);
+ priv->links = NULL;
+ }
+
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (camel_text_index_parent_class)->dispose (object);
+}
+
+static void
+text_index_finalize (GObject *object)
+{
+ CamelTextIndexPrivate *priv;
+
+ priv = CAMEL_TEXT_INDEX_GET_PRIVATE (object);
+
+ g_assert (camel_dlist_empty (&priv->word_cache));
+ g_assert (g_hash_table_size (priv->words) == 0);
+
+ g_hash_table_destroy (priv->words);
+
+ g_static_rec_mutex_free (&priv->lock);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_text_index_parent_class)->finalize (object);
+}
/* call locked */
static void
camel_index_delete ((CamelIndex *)newidx);
- camel_object_unref (newidx);
+ g_object_unref (newidx);
g_free (name);
g_hash_table_destroy (remap);
}
static void
-camel_text_index_class_init (CamelTextIndexClass *klass)
+camel_text_index_class_init (CamelTextIndexClass *class)
{
- CamelIndexClass *iklass = (CamelIndexClass *)klass;
-
- camel_text_index_parent = CAMEL_OBJECT_CLASS (camel_type_get_global_classfuncs (camel_object_get_type ()));
-
- iklass->sync = text_index_sync;
- iklass->compress = text_index_compress;
- iklass->delete = text_index_delete;
-
- iklass->rename = text_index_rename;
-
- iklass->has_name = text_index_has_name;
- iklass->add_name = text_index_add_name;
- iklass->write_name = text_index_write_name;
- iklass->find_name = text_index_find_name;
- iklass->delete_name = text_index_delete_name;
- iklass->find = text_index_find;
-
- iklass->words = text_index_words;
- iklass->names = text_index_names;
-}
-
-static void
-camel_text_index_init (CamelTextIndex *idx)
-{
- CamelTextIndexPrivate *p;
-
- p = CAMEL_TEXT_INDEX_GET_PRIVATE (idx) = g_malloc0(sizeof (*p));
-
- camel_dlist_init (&p->word_cache);
- p->words = g_hash_table_new (g_str_hash, g_str_equal);
- p->word_cache_count = 0;
- /* this cache size and the block cache size have been tuned for about the best
- with moderate memory usage. Doubling the memory usage barely affects performance. */
- p->word_cache_limit = 4096; /* 1024 = 128K */
-
- g_static_rec_mutex_init (&p->lock);
+ GObjectClass *object_class;
+ CamelIndexClass *index_class;
+
+ g_type_class_add_private (class, sizeof (CamelTextIndexPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = text_index_dispose;
+ object_class->finalize = text_index_finalize;
+
+ index_class = CAMEL_INDEX_CLASS (class);
+ index_class->sync = text_index_sync;
+ index_class->compress = text_index_compress;
+ index_class->delete = text_index_delete;
+ index_class->rename = text_index_rename;
+ index_class->has_name = text_index_has_name;
+ index_class->add_name = text_index_add_name;
+ index_class->write_name = text_index_write_name;
+ index_class->find_name = text_index_find_name;
+ index_class->delete_name = text_index_delete_name;
+ index_class->find = text_index_find;
+ index_class->words = text_index_words;
+ index_class->names = text_index_names;
}
static void
-camel_text_index_finalize (CamelTextIndex *idx)
+camel_text_index_init (CamelTextIndex *text_index)
{
- CamelTextIndexPrivate *p = CAMEL_TEXT_INDEX_GET_PRIVATE (idx);
-
- camel_index_sync ((CamelIndex *)idx);
-
- g_assert (camel_dlist_empty (&p->word_cache));
- g_assert (g_hash_table_size (p->words) == 0);
-
- g_hash_table_destroy (p->words);
+ text_index->priv = CAMEL_TEXT_INDEX_GET_PRIVATE (text_index);
- if (p->word_index)
- camel_object_unref (p->word_index);
- if (p->word_hash)
- camel_object_unref (p->word_hash);
- if (p->name_index)
- camel_object_unref (p->name_index);
- if (p->name_hash)
- camel_object_unref (p->name_hash);
+ camel_dlist_init (&text_index->priv->word_cache);
+ text_index->priv->words = g_hash_table_new (g_str_hash, g_str_equal);
+ text_index->priv->word_cache_count = 0;
- if (p->blocks)
- camel_object_unref (p->blocks);
- if (p->links)
- camel_object_unref (p->links);
+ /* This cache size and the block cache size have been tuned for
+ * about the best with moderate memory usage. Doubling the memory
+ * usage barely affects performance. */
+ text_index->priv->word_cache_limit = 4096; /* 1024 = 128K */
- g_static_rec_mutex_free (&p->lock);
-
- g_free (p);
-}
-
-CamelType
-camel_text_index_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_index_get_type (), "CamelTextIndex",
- sizeof (CamelTextIndex),
- sizeof (CamelTextIndexClass),
- (CamelObjectClassInitFunc) camel_text_index_class_init,
- NULL,
- (CamelObjectInitFunc) camel_text_index_init,
- (CamelObjectFinalizeFunc) camel_text_index_finalize);
- }
-
- return type;
+ g_static_rec_mutex_init (&text_index->priv->lock);
}
static gchar *
CamelTextIndex *
camel_text_index_new (const gchar *path, gint flags)
{
- CamelTextIndex *idx = (CamelTextIndex *)camel_object_new (camel_text_index_get_type ());
+ CamelTextIndex *idx = g_object_new (CAMEL_TYPE_TEXT_INDEX, NULL);
CamelTextIndexPrivate *p = CAMEL_TEXT_INDEX_GET_PRIVATE (idx);
struct _CamelTextIndexRoot *rb;
gchar *link;
if (p->word_index == NULL || p->word_hash == NULL
|| p->name_index == NULL || p->name_hash == NULL) {
- camel_object_unref (idx);
+ g_object_unref (idx);
idx = NULL;
}
return idx;
fail:
- camel_object_unref (idx);
+ g_object_unref (idx);
return NULL;
}
keys = camel_key_file_new (key, O_RDONLY, CAMEL_TEXT_INDEX_KEY_VERSION);
if (keys == NULL) {
io (printf ("Check failed: No key file: %s\n", g_strerror (errno)));
- camel_object_unref (blocks);
+ g_object_unref (blocks);
return -1;
}
- camel_object_unref (keys);
- camel_object_unref (blocks);
+ g_object_unref (keys);
+ g_object_unref (blocks);
return 0;
}
printf (" %s", name);
}
printf ("\n");
- camel_object_unref (idc);
+ g_object_unref (idc);
g_free (word);
}
#else
g_hash_table_insert (used, g_strdup (name), (gpointer)1);
}
}
- camel_object_unref (idc);
+ g_object_unref (idc);
g_hash_table_foreach (used, (GHFunc)g_free, NULL);
g_hash_table_destroy (used);
/* CamelTextIndexName */
/* ********************************************************************** */
-static CamelIndexNameClass *camel_text_index_name_parent;
+G_DEFINE_TYPE (CamelTextIndexName, camel_text_index_name, CAMEL_TYPE_INDEX_NAME)
+
+static void
+text_index_name_finalize (GObject *object)
+{
+ CamelTextIndexNamePrivate *priv;
+
+ priv = CAMEL_TEXT_INDEX_NAME_GET_PRIVATE (object);
+
+ g_hash_table_destroy (CAMEL_TEXT_INDEX_NAME (object)->parent.words);
-#define CIN_CLASS(o) ((CamelTextIndexNameClass *)(((CamelObject *)o)->classfuncs))
-#define CAMEL_TEXT_INDEX_NAME_GET_PRIVATE(o) (((CamelTextIndexName *)(o))->priv)
+ g_string_free (priv->buffer, TRUE);
+ camel_mempool_destroy (priv->pool);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_text_index_name_parent_class)->finalize (object);
+}
static void
text_index_name_add_word (CamelIndexName *idn, const gchar *word)
}
static void
-camel_text_index_name_class_init (CamelTextIndexNameClass *klass)
+camel_text_index_name_class_init (CamelTextIndexNameClass *class)
{
- CamelIndexNameClass *nklass = (CamelIndexNameClass *)klass;
-
- camel_text_index_name_parent = CAMEL_INDEX_NAME_CLASS (camel_type_get_global_classfuncs (camel_index_name_get_type ()));
-
- nklass->add_word = text_index_name_add_word;
- nklass->add_buffer = text_index_name_add_buffer;
-}
+ GObjectClass *object_class;
+ CamelIndexNameClass *index_name_class;
-static void
-camel_text_index_name_init (CamelTextIndexName *idn)
-{
- CamelTextIndexNamePrivate *p;
+ g_type_class_add_private (class, sizeof (CamelTextIndexNamePrivate));
- idn->parent.words = g_hash_table_new (g_str_hash, g_str_equal);
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = text_index_name_finalize;
- p = idn->priv = g_malloc0(sizeof (*idn->priv));
- p->buffer = g_string_new ("");
- p->pool = camel_mempool_new (256, 128, CAMEL_MEMPOOL_ALIGN_BYTE);
+ index_name_class = CAMEL_INDEX_NAME_CLASS (class);
+ index_name_class->add_word = text_index_name_add_word;
+ index_name_class->add_buffer = text_index_name_add_buffer;
}
static void
-camel_text_index_name_finalize (CamelTextIndexName *idn)
+camel_text_index_name_init (CamelTextIndexName *text_index_name)
{
- CamelTextIndexNamePrivate *p = CAMEL_TEXT_INDEX_NAME_GET_PRIVATE (idn);
+ text_index_name->priv =
+ CAMEL_TEXT_INDEX_NAME_GET_PRIVATE (text_index_name);
- g_hash_table_destroy (idn->parent.words);
+ text_index_name->parent.words = g_hash_table_new (
+ g_str_hash, g_str_equal);
- g_string_free (p->buffer, TRUE);
- camel_mempool_destroy (p->pool);
-
- g_free (p);
-}
-
-CamelType
-camel_text_index_name_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_index_name_get_type (), "CamelTextIndexName",
- sizeof (CamelTextIndexName),
- sizeof (CamelTextIndexNameClass),
- (CamelObjectClassInitFunc) camel_text_index_name_class_init,
- NULL,
- (CamelObjectInitFunc) camel_text_index_name_init,
- (CamelObjectFinalizeFunc) camel_text_index_name_finalize);
- }
-
- return type;
+ text_index_name->priv->buffer = g_string_new ("");
+ text_index_name->priv->pool =
+ camel_mempool_new (256, 128, CAMEL_MEMPOOL_ALIGN_BYTE);
}
CamelTextIndexName *
camel_text_index_name_new (CamelTextIndex *idx, const gchar *name, camel_key_t nameid)
{
- CamelTextIndexName *idn = (CamelTextIndexName *)camel_object_new (camel_text_index_name_get_type ());
+ CamelTextIndexName *idn = g_object_new (CAMEL_TYPE_TEXT_INDEX_NAME, NULL);
CamelIndexName *cin = &idn->parent;
CamelTextIndexNamePrivate *p = CAMEL_TEXT_INDEX_NAME_GET_PRIVATE (idn);
- cin->index = camel_object_ref (idx);
+ cin->index = g_object_ref (idx);
cin->name = camel_mempool_strdup (p->pool, name);
p->nameid = nameid;
/* CamelTextIndexCursor */
/* ********************************************************************** */
-static CamelIndexCursorClass *camel_text_index_cursor_parent;
+G_DEFINE_TYPE (CamelTextIndexCursor, camel_text_index_cursor, CAMEL_TYPE_INDEX_CURSOR)
-#define CIC_CLASS(o) ((CamelTextIndexCursorClass *)(((CamelObject *)o)->classfuncs))
-#define CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE(o) (((CamelTextIndexCursor *)(o))->priv)
+static void
+text_index_cursor_finalize (GObject *object)
+{
+ CamelTextIndexCursorPrivate *priv;
+
+ priv = CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE (object);
+
+ g_free (priv->records);
+ g_free (priv->current);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_text_index_cursor_parent_class)->finalize (object);
+}
static const gchar *
text_index_cursor_next (CamelIndexCursor *idc)
}
static void
-camel_text_index_cursor_class_init (CamelTextIndexCursorClass *klass)
+camel_text_index_cursor_class_init (CamelTextIndexCursorClass *class)
{
- CamelIndexCursorClass *cklass = (CamelIndexCursorClass *)klass;
+ GObjectClass *object_class;
+ CamelIndexCursorClass *index_cursor_class;
- camel_text_index_cursor_parent = CAMEL_INDEX_CURSOR_CLASS (camel_type_get_global_classfuncs (camel_index_cursor_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelTextIndexCursorPrivate));
- cklass->next = text_index_cursor_next;
- cklass->reset = text_index_cursor_reset;
-}
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = text_index_cursor_finalize;
-static void
-camel_text_index_cursor_init (CamelTextIndexCursor *idc)
-{
- CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE (idc) = g_malloc0(sizeof (CamelTextIndexCursorPrivate));
+ index_cursor_class = CAMEL_INDEX_CURSOR_CLASS (class);
+ index_cursor_class->next = text_index_cursor_next;
+ index_cursor_class->reset = text_index_cursor_reset;
}
static void
-camel_text_index_cursor_finalize (CamelTextIndexCursor *idc)
+camel_text_index_cursor_init (CamelTextIndexCursor *text_index_cursor)
{
- CamelTextIndexCursorPrivate *p = CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE (idc);
-
- g_free (p->records);
- g_free (p->current);
- g_free (p);
-}
-
-CamelType
-camel_text_index_cursor_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_index_cursor_get_type (), "CamelTextIndexCursor",
- sizeof (CamelTextIndexCursor),
- sizeof (CamelTextIndexCursorClass),
- (CamelObjectClassInitFunc) camel_text_index_cursor_class_init,
- NULL,
- (CamelObjectInitFunc) camel_text_index_cursor_init,
- (CamelObjectFinalizeFunc) camel_text_index_cursor_finalize);
- }
-
- return type;
+ text_index_cursor->priv =
+ CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE (text_index_cursor);
}
CamelTextIndexCursor *
camel_text_index_cursor_new (CamelTextIndex *idx, camel_block_t data)
{
- CamelTextIndexCursor *idc = (CamelTextIndexCursor *)camel_object_new (camel_text_index_cursor_get_type ());
+ CamelTextIndexCursor *idc = g_object_new (CAMEL_TYPE_TEXT_INDEX_CURSOR, NULL);
CamelIndexCursor *cic = &idc->parent;
CamelTextIndexCursorPrivate *p = CAMEL_TEXT_INDEX_CURSOR_GET_PRIVATE (idc);
- cic->index = camel_object_ref (idx);
+ cic->index = g_object_ref (idx);
p->first = data;
p->next = data;
p->record_count = 0;
/* CamelTextIndexKeyCursor */
/* ********************************************************************** */
-static CamelIndexCursorClass *camel_text_index_key_cursor_parent;
+G_DEFINE_TYPE (CamelTextIndexKeyCursor, camel_text_index_key_cursor, CAMEL_TYPE_INDEX_CURSOR)
+
+static void
+text_index_key_cursor_dispose (GObject *object)
+{
+ CamelTextIndexKeyCursorPrivate *priv;
+
+ priv = CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE (object);
+
+ if (priv->table != NULL) {
+ g_object_unref (priv->table);
+ priv->table = NULL;
+ }
-#define CIKC_CLASS(o) ((CamelTextIndexKeyCursorClass *)(((CamelObject *)o)->classfuncs))
-#define CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE(o) (((CamelTextIndexKeyCursor *)(o))->priv)
+ /* Chain up parent's dispose() method. */
+ G_OBJECT_CLASS (camel_text_index_key_cursor_parent_class)->dispose (object);
+}
+
+static void
+text_index_key_cursor_finalize (GObject *object)
+{
+ CamelTextIndexKeyCursorPrivate *priv;
+
+ priv = CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE (object);
+
+ g_free (priv->current);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_text_index_key_cursor_parent_class)->finalize (object);
+}
static const gchar *
text_index_key_cursor_next (CamelIndexCursor *idc)
}
static void
-camel_text_index_key_cursor_class_init (CamelTextIndexKeyCursorClass *klass)
+camel_text_index_key_cursor_class_init (CamelTextIndexKeyCursorClass *class)
{
- CamelIndexCursorClass *cklass = (CamelIndexCursorClass *)klass;
+ GObjectClass *object_class;
+ CamelIndexCursorClass *index_cursor_class;
- camel_text_index_key_cursor_parent = CAMEL_INDEX_CURSOR_CLASS (camel_type_get_global_classfuncs (camel_index_cursor_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelTextIndexKeyCursorPrivate));
- cklass->next = text_index_key_cursor_next;
- cklass->reset = text_index_key_cursor_reset;
-}
-
-static void
-camel_text_index_key_cursor_init (CamelTextIndexKeyCursor *idc)
-{
- CamelTextIndexKeyCursorPrivate *p;
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = text_index_key_cursor_dispose;
+ object_class->finalize = text_index_key_cursor_finalize;
- p = idc->priv = g_malloc0(sizeof (CamelTextIndexKeyCursorPrivate));
- p->keyid = 0;
- p->flags = 0;
- p->data = 0;
- p->current = NULL;
+ index_cursor_class = CAMEL_INDEX_CURSOR_CLASS (class);
+ index_cursor_class->next = text_index_key_cursor_next;
+ index_cursor_class->reset = text_index_key_cursor_reset;
}
static void
-camel_text_index_key_cursor_finalize (CamelTextIndexKeyCursor *idc)
+camel_text_index_key_cursor_init (CamelTextIndexKeyCursor *text_index_key_cursor)
{
- CamelTextIndexKeyCursorPrivate *p = CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE (idc);
-
- g_free (p->current);
- if (p->table)
- camel_object_unref (p->table);
- g_free (p);
-}
-
-CamelType
-camel_text_index_key_cursor_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_index_cursor_get_type (), "CamelTextIndexKeyCursor",
- sizeof (CamelTextIndexKeyCursor),
- sizeof (CamelTextIndexKeyCursorClass),
- (CamelObjectClassInitFunc) camel_text_index_key_cursor_class_init,
- NULL,
- (CamelObjectInitFunc) camel_text_index_key_cursor_init,
- (CamelObjectFinalizeFunc) camel_text_index_key_cursor_finalize);
- }
+ text_index_key_cursor->priv =
+ CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE (text_index_key_cursor);
- return type;
+ text_index_key_cursor->priv->keyid = 0;
+ text_index_key_cursor->priv->flags = 0;
+ text_index_key_cursor->priv->data = 0;
+ text_index_key_cursor->priv->current = NULL;
}
CamelTextIndexKeyCursor *
camel_text_index_key_cursor_new (CamelTextIndex *idx, CamelKeyTable *table)
{
- CamelTextIndexKeyCursor *idc = (CamelTextIndexKeyCursor *)camel_object_new (camel_text_index_key_cursor_get_type ());
+ CamelTextIndexKeyCursor *idc = g_object_new (CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR, NULL);
CamelIndexCursor *cic = &idc->parent;
CamelTextIndexKeyCursorPrivate *p = CAMEL_TEXT_INDEX_KEY_CURSOR_GET_PRIVATE (idc);
- cic->index = camel_object_ref (idx);
- p->table = camel_object_ref (table);
+ cic->index = g_object_ref (idx);
+ p->table = g_object_ref (table);
return idc;
}
idn = camel_index_add_name (idx, name);
camel_index_name_add_buffer (idn, wordbuffer, sizeof (wordbuffer)-1);
camel_index_write_name (idx, idn);
- camel_object_unref (idn);
+ g_object_unref (idn);
}
printf ("Looking up which names contain word 'word'\n");
while ((word = camel_index_cursor_next (idc)) != NULL) {
printf (" name is '%s'\n", word);
}
- camel_object_unref (idc);
+ g_object_unref (idc);
printf ("done.\n");
printf ("Looking up which names contain word 'truncate'\n");
while ((word = camel_index_cursor_next (idc)) != NULL) {
printf (" name is '%s'\n", word);
}
- camel_object_unref (idc);
+ g_object_unref (idc);
printf ("done.\n");
camel_index_sync (idx);
- camel_object_unref (idx);
+ g_object_unref (idx);
#if 0
bs = camel_block_file_new ("blocks", "TESTINDX", CAMEL_BLOCK_SIZE);
#include <camel/camel-object.h>
#include "camel-index.h"
-#define CAMEL_TEXT_INDEX(obj) CAMEL_CHECK_CAST (obj, camel_text_index_get_type (), CamelTextIndex)
-#define CAMEL_TEXT_INDEX_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_text_index_get_type (), CamelTextIndexClass)
-#define CAMEL_IS_TEXT_INDEX(obj) CAMEL_CHECK_TYPE (obj, camel_text_index_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_TEXT_INDEX \
+ (camel_text_index_get_type ())
+#define CAMEL_TEXT_INDEX(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TEXT_INDEX, CamelTextIndex))
+#define CAMEL_TEXT_INDEX_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TEXT_INDEX, CamelTextIndexClass))
+#define CAMEL_IS_TEXT_INDEX(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX))
+#define CAMEL_IS_TEXT_INDEX_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TEXT_INDEX))
+#define CAMEL_TEXT_INDEX_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TEXT_INDEX, CamelTextIndexClass))
+
+#define CAMEL_TYPE_TEXT_INDEX_NAME \
+ (camel_text_index_name_get_type ())
+#define CAMEL_TEXT_INDEX_NAME(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_NAME, CamelTextIndexName))
+#define CAMEL_TEXT_INDEX_NAME_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TEXT_INDEX_NAME, CamelTextIndexNameClass))
+#define CAMEL_IS_TEXT_INDEX_NAME(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_NAME))
+#define CAMEL_IS_TEXT_INDEX_NAME_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TEXT_INDEX_NAME))
+#define CAMEL_TEXT_INDEX_NAME_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_NAME, CamelTextIndexNameClass))
+
+#define CAMEL_TYPE_TEXT_INDEX_CURSOR \
+ (camel_text_index_cursor_get_type ())
+#define CAMEL_TEXT_INDEX_CURSOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_CURSOR, CamelTextIndexCursor))
+#define CAMEL_TEXT_INDEX_CURSOR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TEXT_INDEX_CURSOR, CamelTextIndexCursorClass))
+#define CAMEL_IS_TEXT_INDEX_CURSOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_CURSOR))
+#define CAMEL_IS_TEXT_INDEX_CURSOR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TEXT_INDEX_CURSOR))
+#define CAMEL_TEXT_INDEX_CURSOR_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_CURSOR, CamelTextIndexCursorClass))
+
+#define CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR \
+ (camel_text_index_key_cursor_get_type ())
+#define CAMEL_TEXT_INDEX_KEY_CURSOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR, CamelTextIndexKeyCursor))
+#define CAMEL_TEXT_INDEX_KEY_CURSOR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR, CamelTextIndexKeyCursorClass))
+#define CAMEL_IS_TEXT_INDEX_KEY_CURSOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR))
+#define CAMEL_IS_TEXT_INDEX_KEY_CURSOR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR))
+#define CAMEL_TEXT_INDEX_KEY_CURSOR_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR, CamelTextIndexKeyCursorClass))
G_BEGIN_DECLS
CamelIndexCursorClass parent_class;
};
-CamelType camel_text_index_cursor_get_type(void);
+GType camel_text_index_cursor_get_type(void);
/* ********************************************************************** */
CamelIndexCursorClass parent_class;
};
-CamelType camel_text_index_key_cursor_get_type(void);
+GType camel_text_index_key_cursor_get_type(void);
/* ********************************************************************** */
CamelIndexNameClass parent_class;
};
-CamelType camel_text_index_name_get_type(void);
+GType camel_text_index_name_get_type(void);
/* ********************************************************************** */
CamelIndexClass parent_class;
};
-CamelType camel_text_index_get_type (void);
+GType camel_text_index_get_type (void);
CamelTextIndex *camel_text_index_new (const gchar *path,
gint flags);
#include "camel-mime-message.h"
#include "camel-transport.h"
+#define CAMEL_TRANSPORT_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_TRANSPORT, CamelTransportPrivate))
+
struct _CamelTransportPrivate {
GMutex *send_lock; /* for locking send operations */
};
-static CamelServiceClass *parent_class = NULL;
+G_DEFINE_ABSTRACT_TYPE (CamelTransport, camel_transport, CAMEL_TYPE_SERVICE)
static void
-transport_finalize (CamelObject *object)
+transport_finalize (GObject *object)
{
- CamelTransportPrivate *priv = CAMEL_TRANSPORT (object)->priv;
+ CamelTransportPrivate *priv;
+
+ priv = CAMEL_TRANSPORT_GET_PRIVATE (object);
g_mutex_free (priv->send_lock);
- g_free (priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_transport_parent_class)->finalize (object);
}
static void
camel_transport_class_init (CamelTransportClass *class)
{
- parent_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (CamelTransportPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = transport_finalize;
}
static void
camel_transport_init (CamelTransport *transport)
{
- transport->priv = g_malloc0 (sizeof (struct _CamelTransportPrivate));
+ transport->priv = CAMEL_TRANSPORT_GET_PRIVATE (transport);
transport->priv->send_lock = g_mutex_new ();
}
-CamelType
-camel_transport_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_SERVICE_TYPE,
- "CamelTransport",
- sizeof (CamelTransport),
- sizeof (CamelTransportClass),
- (CamelObjectClassInitFunc) camel_transport_class_init,
- NULL,
- (CamelObjectInitFunc) camel_transport_init,
- (CamelObjectFinalizeFunc) transport_finalize);
- }
-
- return type;
-}
-
/**
* camel_transport_send_to:
* @transport: a #CamelTransport object
*
* Locks #transport's #lock. Unlock it with camel_transport_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_transport_lock (CamelTransport *transport, CamelTransportLock lock)
+camel_transport_lock (CamelTransport *transport,
+ CamelTransportLock lock)
{
- g_return_if_fail (transport != NULL);
g_return_if_fail (CAMEL_IS_TRANSPORT (transport));
- g_return_if_fail (transport->priv != NULL);
switch (lock) {
- case CT_SEND_LOCK:
- g_mutex_lock (transport->priv->send_lock);
- break;
- default:
- g_return_if_reached ();
+ case CT_SEND_LOCK:
+ g_mutex_lock (transport->priv->send_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #transport's #lock, previously locked with camel_transport_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_transport_unlock (CamelTransport *transport, CamelTransportLock lock)
+camel_transport_unlock (CamelTransport *transport,
+ CamelTransportLock lock)
{
- g_return_if_fail (transport != NULL);
g_return_if_fail (CAMEL_IS_TRANSPORT (transport));
- g_return_if_fail (transport->priv != NULL);
switch (lock) {
- case CT_SEND_LOCK:
- g_mutex_unlock (transport->priv->send_lock);
- break;
- default:
- g_return_if_reached ();
+ case CT_SEND_LOCK:
+ g_mutex_unlock (transport->priv->send_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-mime-message.h>
#include <camel/camel-service.h>
-#define CAMEL_TRANSPORT_TYPE (camel_transport_get_type ())
-#define CAMEL_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TRANSPORT_TYPE, CamelTransport))
-#define CAMEL_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TRANSPORT_TYPE, CamelTransportClass))
-#define CAMEL_IS_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_TRANSPORT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_TRANSPORT \
+ (camel_transport_get_type ())
+#define CAMEL_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TRANSPORT, CamelTransport))
+#define CAMEL_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TRANSPORT, CamelTransportClass))
+#define CAMEL_IS_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TRANSPORT))
+#define CAMEL_IS_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TRANSPORT))
#define CAMEL_TRANSPORT_GET_CLASS(obj) \
- ((CamelTransportClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TRANSPORT, CamelTransportClass))
G_BEGIN_DECLS
CAMEL_TRANSPORT_ARG_FIRST = CAMEL_SERVICE_ARG_FIRST + 100
};
-typedef enum _CamelTransportLock {
+typedef enum {
CT_SEND_LOCK
} CamelTransportLock;
struct _CamelTransportClass {
CamelServiceClass parent_class;
- gboolean (*send_to) (CamelTransport *transport,
- CamelMimeMessage *message,
- CamelAddress *from, CamelAddress *recipients,
- CamelException *ex);
+ gboolean (*send_to) (CamelTransport *transport,
+ CamelMimeMessage *message,
+ CamelAddress *from,
+ CamelAddress *recipients,
+ CamelException *ex);
};
-/* public methods */
-gboolean camel_transport_send_to (CamelTransport *transport,
- CamelMimeMessage *message,
- CamelAddress *from,
- CamelAddress *recipients,
- CamelException *ex);
-
-CamelType camel_transport_get_type (void);
-
-void camel_transport_lock (CamelTransport *transport, CamelTransportLock lock);
-void camel_transport_unlock (CamelTransport *transport, CamelTransportLock lock);
+GType camel_transport_get_type (void);
+gboolean camel_transport_send_to (CamelTransport *transport,
+ CamelMimeMessage *message,
+ CamelAddress *from,
+ CamelAddress *recipients,
+ CamelException *ex);
+void camel_transport_lock (CamelTransport *transport,
+ CamelTransportLock lock);
+void camel_transport_unlock (CamelTransport *transport,
+ CamelTransportLock lock);
G_END_DECLS
#define d(x)
#define dd(x) (camel_debug ("vfolder")?(x):0)
+#define CAMEL_VEE_FOLDER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_VEE_FOLDER, CamelVeeFolderPrivate))
+
struct _CamelVeeFolderPrivate {
gboolean destroyed;
GList *folders; /* lock using subfolder_lock before changing/accessing */
gint unread_vfolder;
};
-#define CAMEL_VEE_FOLDER_GET_PRIVATE(o) (((CamelVeeFolder *)(o))->priv)
-
-static gpointer camel_vee_folder_parent_class;
-
struct _update_data {
CamelFolder *source;
CamelVeeFolder *vee_folder;
CamelVeeFolder *vee_folder;
};
+G_DEFINE_TYPE (CamelVeeFolder, camel_vee_folder, CAMEL_TYPE_FOLDER)
+
/* must be called with summary_lock held */
static CamelVeeMessageInfo *
vee_folder_add_uid (CamelVeeFolder *vf,
struct _folder_changed_msg *m = (struct _folder_changed_msg *)msg;
camel_folder_change_info_free (m->changes);
- camel_object_unref (m->vee_folder);
- camel_object_unref (m->sub);
+ g_object_unref (m->vee_folder);
+ g_object_unref (m->sub);
}
static CamelSessionThreadOps folder_changed_ops = {
if (sub->folder_flags & CAMEL_FOLDER_HAS_BEEN_DELETED) {
while (g_list_find (up->folders, sub)) {
up->folders = g_list_remove (up->folders, sub);
- camel_object_unref (sub);
+ g_object_unref (sub);
/* undo the freeze state that Unmatched has imposed on this source folder */
camel_folder_lock (CAMEL_FOLDER (folder_unmatched), CF_CHANGE_LOCK);
} else if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
if (g_list_find (up->folders, sub) != NULL) {
up->folders = g_list_remove (up->folders, sub);
- camel_object_unref (sub);
+ g_object_unref (sub);
/* undo the freeze state that Unmatched has imposed on this source folder */
camel_folder_lock (CAMEL_FOLDER (folder_unmatched), CF_CHANGE_LOCK);
if (CAMEL_IS_VEE_FOLDER (sub))
return;
- camel_object_unref (sub);
+ g_object_unref (sub);
}
static void
-vee_folder_finalize (CamelVeeFolder *vf)
+vee_folder_finalize (GObject *object)
{
+ CamelVeeFolder *vf;
CamelVeeFolder *folder_unmatched;
GList *node;
CamelFIRecord * record;
+ vf = CAMEL_VEE_FOLDER (object);
vf->priv->destroyed = TRUE;
folder_unmatched = vf->parent_vee_store ? vf->parent_vee_store->folder_unmatched : NULL;
/* This may invoke sub-classes with partially destroyed state, they must deal with this */
if (vf == folder_unmatched) {
for (node = vf->priv->folders;node;node = g_list_next (node))
- camel_object_unref (node->data);
+ g_object_unref (node->data);
} else {
/* FIXME[disk-summary] See if it is really reqd */
camel_folder_freeze ((CamelFolder *)vf);
g_list_free (vf->priv->folders_changed);
camel_folder_change_info_free (vf->changes);
- camel_object_unref (vf->search);
+ g_object_unref (vf->search);
g_mutex_free (vf->priv->summary_lock);
g_mutex_free (vf->priv->subfolder_lock);
g_mutex_free (vf->priv->changed_lock);
g_hash_table_destroy (vf->hashes);
- g_free (vf->priv);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_vee_folder_parent_class)->finalize (object);
}
/* This entire code will be useless, since we sync the counts always. */
while (p->folders) {
CamelFolder *f = p->folders->data;
- camel_object_ref (f);
+ g_object_ref (f);
camel_vee_folder_unlock (CAMEL_VEE_FOLDER (folder), CVF_SUBFOLDER_LOCK);
camel_vee_folder_remove_folder ((CamelVeeFolder *)folder, f);
- camel_object_unref (f);
+ g_object_unref (f);
camel_vee_folder_lock (CAMEL_VEE_FOLDER (folder), CVF_SUBFOLDER_LOCK);
}
camel_vee_folder_unlock (CAMEL_VEE_FOLDER (folder), CVF_SUBFOLDER_LOCK);
m = camel_session_thread_msg_new (session, &folder_changed_ops, sizeof (*m));
m->changes = camel_folder_change_info_new ();
camel_folder_change_info_cat (m->changes, changes);
- m->sub = camel_object_ref (sub);
- m->vee_folder = camel_object_ref (vee_folder);
+ m->sub = g_object_ref (sub);
+ m->vee_folder = g_object_ref (vee_folder);
camel_session_thread_queue (session, &m->msg, 0);
}
static void
camel_vee_folder_class_init (CamelVeeFolderClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
CamelFolderClass *folder_class;
- camel_vee_folder_parent_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelVeeFolderPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = vee_folder_finalize;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = vee_folder_getv;
{
CamelFolder *folder = CAMEL_FOLDER (vee_folder);
- vee_folder->priv = g_new0 (CamelVeeFolderPrivate, 1);
+ vee_folder->priv = CAMEL_VEE_FOLDER_GET_PRIVATE (vee_folder);
folder->folder_flags |= (CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY |
CAMEL_FOLDER_HAS_SEARCH_CAPABILITY);
vee_folder->priv->unread_vfolder = -1;
}
-CamelType
-camel_vee_folder_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_folder_get_type (), "CamelVeeFolder",
- sizeof (CamelVeeFolder),
- sizeof (CamelVeeFolderClass),
- (CamelObjectClassInitFunc) camel_vee_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_vee_folder_init,
- (CamelObjectFinalizeFunc) vee_folder_finalize);
- }
-
- return type;
-}
-
void
camel_vee_folder_construct (CamelVeeFolder *vf, CamelStore *parent_store, const gchar *full, const gchar *name, guint32 flags)
{
if (CAMEL_IS_VEE_STORE (parent_store) && strcmp (full, CAMEL_UNMATCHED_NAME) == 0) {
vf = ((CamelVeeStore *)parent_store)->folder_unmatched;
- camel_object_ref (vf);
+ g_object_ref (vf);
} else {
const gchar *name = strrchr (full, '/');
name = full;
else
name++;
- vf = (CamelVeeFolder *)camel_object_new (camel_vee_folder_get_type ());
+ vf = g_object_new (CAMEL_TYPE_VEE_FOLDER, NULL);
camel_vee_folder_construct (vf, parent_store, full, name, flags);
}
/* for normal vfolders we want only unique ones, for unmatched we want them all recorded */
if (g_list_find (p->folders, sub) == NULL) {
p->folders = g_list_append (
- p->folders, camel_object_ref (sub));
+ p->folders, g_object_ref (sub));
camel_folder_lock (CAMEL_FOLDER (vf), CF_CHANGE_LOCK);
if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0 && !CAMEL_IS_VEE_FOLDER (sub) && folder_unmatched != NULL) {
CamelVeeFolderPrivate *up = CAMEL_VEE_FOLDER_GET_PRIVATE (folder_unmatched);
up->folders = g_list_append (
- up->folders, camel_object_ref (sub));
+ up->folders, g_object_ref (sub));
camel_folder_lock (CAMEL_FOLDER (folder_unmatched), CF_CHANGE_LOCK);
if (sub->folder_flags & CAMEL_FOLDER_HAS_BEEN_DELETED) {
while (g_list_find (up->folders, sub)) {
up->folders = g_list_remove (up->folders, sub);
- camel_object_unref (sub);
+ g_object_unref (sub);
/* undo the freeze state that Unmatched has imposed on this source folder */
camel_folder_lock (CAMEL_FOLDER (folder_unmatched), CF_CHANGE_LOCK);
} else if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
if (g_list_find (up->folders, sub) != NULL) {
up->folders = g_list_remove (up->folders, sub);
- camel_object_unref (sub);
+ g_object_unref (sub);
/* undo the freeze state that Unmatched has imposed on this source folder */
camel_folder_lock (CAMEL_FOLDER (folder_unmatched), CF_CHANGE_LOCK);
if (CAMEL_IS_VEE_FOLDER (sub))
return;
- camel_object_unref (sub);
+ g_object_unref (sub);
}
/**
remove_folders (CamelFolder *folder, CamelFolder *foldercopy, CamelVeeFolder *vf)
{
camel_vee_folder_remove_folder (vf, folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
/**
l = p->folders;
while (l) {
g_hash_table_insert (remove, l->data, l->data);
- camel_object_ref (l->data);
+ g_object_ref (l->data);
l = l->next;
}
camel_vee_folder_unlock (vf, CVF_SUBFOLDER_LOCK);
while (l) {
if ((folder = g_hash_table_lookup (remove, l->data))) {
g_hash_table_remove (remove, folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
} else {
camel_vee_folder_add_folder (vf, l->data);
}
/* FIXME: This shouldn't be needed */
void
-camel_vee_folder_set_unread_vfolder (CamelVeeFolder *folder, gint unread_vfolder)
+camel_vee_folder_set_unread_vfolder (CamelVeeFolder *folder,
+ gint unread_vfolder)
{
g_return_if_fail (folder != NULL);
g_return_if_fail (CAMEL_IS_VEE_FOLDER (folder));
*
* Locks #folder's #lock. Unlock it with camel_vee_folder_unlock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_vee_folder_lock (CamelVeeFolder *folder, CamelVeeFolderLock lock)
+camel_vee_folder_lock (CamelVeeFolder *folder,
+ CamelVeeFolderLock lock)
{
- g_return_if_fail (folder != NULL);
g_return_if_fail (CAMEL_IS_VEE_FOLDER (folder));
- g_return_if_fail (folder->priv != NULL);
switch (lock) {
- case CVF_SUMMARY_LOCK:
- g_mutex_lock (folder->priv->summary_lock);
- break;
- case CVF_SUBFOLDER_LOCK:
- g_mutex_lock (folder->priv->subfolder_lock);
- break;
- case CVF_CHANGED_LOCK:
- g_mutex_lock (folder->priv->changed_lock);
- break;
- default:
- g_return_if_reached ();
+ case CVF_SUMMARY_LOCK:
+ g_mutex_lock (folder->priv->summary_lock);
+ break;
+ case CVF_SUBFOLDER_LOCK:
+ g_mutex_lock (folder->priv->subfolder_lock);
+ break;
+ case CVF_CHANGED_LOCK:
+ g_mutex_lock (folder->priv->changed_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
*
* Unlocks #folder's #lock, previously locked with camel_vee_folder_lock().
*
- * Since: 2.31.1
+ * Since: 3.0
**/
void
-camel_vee_folder_unlock (CamelVeeFolder *folder, CamelVeeFolderLock lock)
+camel_vee_folder_unlock (CamelVeeFolder *folder,
+ CamelVeeFolderLock lock)
{
- g_return_if_fail (folder != NULL);
g_return_if_fail (CAMEL_IS_VEE_FOLDER (folder));
- g_return_if_fail (folder->priv != NULL);
switch (lock) {
- case CVF_SUMMARY_LOCK:
- g_mutex_unlock (folder->priv->summary_lock);
- break;
- case CVF_SUBFOLDER_LOCK:
- g_mutex_unlock (folder->priv->subfolder_lock);
- break;
- case CVF_CHANGED_LOCK:
- g_mutex_unlock (folder->priv->changed_lock);
- break;
- default:
- g_return_if_reached ();
+ case CVF_SUMMARY_LOCK:
+ g_mutex_unlock (folder->priv->summary_lock);
+ break;
+ case CVF_SUBFOLDER_LOCK:
+ g_mutex_unlock (folder->priv->subfolder_lock);
+ break;
+ case CVF_CHANGED_LOCK:
+ g_mutex_unlock (folder->priv->changed_lock);
+ break;
+ default:
+ g_return_if_reached ();
}
}
#include <camel/camel-store.h>
#include <camel/camel-vee-summary.h>
-#define CAMEL_VEE_FOLDER(obj) CAMEL_CHECK_CAST (obj, camel_vee_folder_get_type (), CamelVeeFolder)
-#define CAMEL_VEE_FOLDER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vee_folder_get_type (), CamelVeeFolderClass)
-#define CAMEL_IS_VEE_FOLDER(obj) CAMEL_CHECK_TYPE (obj, camel_vee_folder_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_VEE_FOLDER \
+ (camel_vee_folder_get_type ())
+#define CAMEL_VEE_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_VEE_FOLDER, CamelVeeFolder))
+#define CAMEL_VEE_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_VEE_FOLDER, CamelVeeFolderClass))
+#define CAMEL_IS_VEE_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_VEE_FOLDER))
+#define CAMEL_IS_VEE_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_VEE_FOLDER))
#define CAMEL_VEE_FOLDER_GET_CLASS(obj) \
- ((CamelVeeFolderClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_VEE_FOLDER, CamelVeeFolderClass))
G_BEGIN_DECLS
typedef struct _CamelVeeFolderClass CamelVeeFolderClass;
typedef struct _CamelVeeFolderPrivate CamelVeeFolderPrivate;
-typedef enum _CamelVeeFolderLock {
+typedef enum {
CVF_SUMMARY_LOCK,
CVF_SUBFOLDER_LOCK,
CVF_CHANGED_LOCK
#define CAMEL_UNMATCHED_NAME "UNMATCHED"
-CamelType camel_vee_folder_get_type (void);
+GType camel_vee_folder_get_type (void);
CamelFolder *camel_vee_folder_new (CamelStore *parent_store, const gchar *full, guint32 flags);
void camel_vee_folder_construct (CamelVeeFolder *vf, CamelStore *parent_store, const gchar *full, const gchar *name, guint32 flags);
#define CHANGE_DELETE (1)
#define CHANGE_NOSELECT (2)
-static gpointer camel_vee_store_parent_class;
+G_DEFINE_TYPE (CamelVeeStore, camel_vee_store, CAMEL_TYPE_STORE)
static gint
vee_folder_cmp (gconstpointer ap,
}
static void
-vee_store_finalize (CamelVeeStore *vee_store)
+vee_store_finalize (GObject *object)
{
+ CamelVeeStore *vee_store = CAMEL_VEE_STORE (object);
+
g_hash_table_foreach (vee_store->unmatched_uids, cvs_free_unmatched, NULL);
g_hash_table_destroy (vee_store->unmatched_uids);
- camel_object_unref (vee_store->folder_unmatched);
+ g_object_unref (vee_store->folder_unmatched);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_vee_store_parent_class)->finalize (object);
}
static gboolean
/* Set up unmatched folder */
#ifndef VEE_UNMATCHED_ENABLE
vee_store->unmatched_uids = g_hash_table_new (g_str_hash, g_str_equal);
- vee_store->folder_unmatched = (CamelVeeFolder *)camel_object_new (camel_vee_folder_get_type ());
+ vee_store->folder_unmatched = g_object_new (CAMEL_TYPE_VEE_FOLDER, NULL);
camel_vee_folder_construct (vee_store->folder_unmatched, store, CAMEL_UNMATCHED_NAME, _("Unmatched"), CAMEL_STORE_FOLDER_PRIVATE);
camel_db_create_vfolder (store->cdb_r, _("Unmatched"), NULL);
#endif
change_folder (store, name, CHANGE_ADD|CHANGE_NOSELECT, 0);
/* FIXME: this sort of leaks folder, nobody owns a ref to it but us */
} else {
- camel_object_unref (folder);
+ g_object_unref (folder);
}
*p++='/';
}
change_folder (store, name, CHANGE_ADD|CHANGE_NOSELECT, 0);
/* FIXME: this sort of leaks folder, nobody owns a ref to it but us */
} else {
- camel_object_unref (folder);
+ g_object_unref (folder);
}
*p++='/';
}
- camel_object_unref (oldfolder);
+ g_object_unref (oldfolder);
return TRUE;
}
change_folder (store, folder_name, CHANGE_DELETE, -1);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
} else {
camel_exception_setv (
ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
}
g_free (pname);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
g_ptr_array_free (folders, TRUE);
g_hash_table_destroy (infos_hash);
static void
camel_vee_store_class_init (CamelVeeStoreClass *class)
{
+ GObjectClass *object_class;
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_vee_store_parent_class = (CamelStoreClass *)camel_store_get_type ();
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = vee_store_finalize;
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = vee_store_construct;
store->flags &= ~(CAMEL_STORE_VTRASH | CAMEL_STORE_VJUNK);
}
-CamelType
-camel_vee_store_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_store_get_type (), "CamelVeeStore",
- sizeof (CamelVeeStore),
- sizeof (CamelVeeStoreClass),
- (CamelObjectClassInitFunc) camel_vee_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_vee_store_init,
- (CamelObjectFinalizeFunc) vee_store_finalize);
- }
-
- return type;
-}
-
/**
* camel_vee_store_new:
*
CamelVeeStore *
camel_vee_store_new (void)
{
- return CAMEL_VEE_STORE (camel_object_new (camel_vee_store_get_type ()));
+ return g_object_new (CAMEL_TYPE_VEE_STORE, NULL);
}
#include <camel/camel-store.h>
-#define CAMEL_VEE_STORE(obj) CAMEL_CHECK_CAST (obj, camel_vee_store_get_type (), CamelVeeStore)
-#define CAMEL_VEE_STORE_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vee_store_get_type (), CamelVeeStoreClass)
-#define CAMEL_IS_VEE_STORE(obj) CAMEL_CHECK_TYPE (obj, camel_vee_store_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_VEE_STORE \
+ (camel_vee_store_get_type ())
+#define CAMEL_VEE_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_VEE_STORE, CamelVeeStore))
+#define CAMEL_VEE_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_VEE_STORE, CamelVeeStoreClass))
+#define CAMEL_IS_VEE_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_VEE_STORE))
+#define CAMEL_IS_VEE_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_VEE_STORE))
+#define CAMEL_VEE_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_VEE_STORE, CamelVeeStoreClass))
G_BEGIN_DECLS
CamelStoreClass parent_class;
};
-CamelType camel_vee_store_get_type (void);
+GType camel_vee_store_get_type (void);
CamelVeeStore * camel_vee_store_new (void);
G_END_DECLS
#define d(x)
-static CamelFolderSummaryClass *camel_vee_summary_parent;
static const gchar *unread_str = " (and\n \n (match-all (not (system-flag \"Seen\")))\n \n )\n; (or\n \n (match-all (not (system-flag \"Seen\")))\n \n )\n; (match-threads \"all\" (and\n \n (match-all (not (system-flag \"Seen\")))\n \n )\n)\n; (match-threads \"all\" (or\n \n (match-all (not (system-flag \"Seen\")))\n \n )\n)\n;";
+G_DEFINE_TYPE (CamelVeeSummary, camel_vee_summary, CAMEL_TYPE_FOLDER_SUMMARY)
+
static void
vee_message_info_free(CamelFolderSummary *s, CamelMessageInfo *info)
{
CamelVeeMessageInfo *mi = (CamelVeeMessageInfo *)info;
camel_pstring_free(info->uid);
- camel_object_unref (mi->summary);
+ g_object_unref (mi->summary);
}
static CamelMessageInfo *
to = (CamelVeeMessageInfo *)camel_message_info_new(s);
- to->summary = camel_object_ref (from->summary);
+ to->summary = g_object_ref (from->summary);
to->info.summary = s;
to->info.uid = camel_pstring_strdup(from->info.uid);
strncpy(tmphash, uid, 8);
tmphash[8] = 0;
vinfo->summary = g_hash_table_lookup(((CamelVeeFolder *) s->folder)->hashes, tmphash);
- camel_object_ref (vinfo->summary);
+ g_object_ref (vinfo->summary);
camel_folder_summary_insert (s, info, FALSE);
}
return info;
{
}
-CamelType
-camel_vee_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- camel_vee_summary_parent = (CamelFolderSummaryClass *)camel_folder_summary_get_type();
-
- type = camel_type_register(
- camel_folder_summary_get_type(), "CamelVeeSummary",
- sizeof (CamelVeeSummary),
- sizeof (CamelVeeSummaryClass),
- (CamelObjectClassInitFunc) camel_vee_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_vee_summary_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_vee_summary_new:
* @parent: Folder its attached to.
{
CamelVeeSummary *s;
- s = (CamelVeeSummary *)camel_object_new(camel_vee_summary_get_type());
+ s = g_object_new (CAMEL_TYPE_VEE_SUMMARY, NULL);
s->summary.folder = parent;
s->force_counts = FALSE;
s->fake_visible_count = 0;
d(g_message ("%s - already there\n", vuid));
g_free (vuid);
if (!mi->summary)
- mi->summary = camel_object_ref (summary);
+ mi->summary = g_object_ref (summary);
camel_message_info_ref (mi);
return mi;
fcache = camel_folder_summary_get_flag_cache(summary);
mi->old_flags = GPOINTER_TO_UINT(g_hash_table_lookup (fcache, uid));
/* We would do lazy loading of flags, when the folders are loaded to memory through folder_reloaded signal */
- camel_object_ref (summary);
+ g_object_ref (summary);
mi->info.uid = (gchar *) camel_pstring_strdup (vuid);
g_free (vuid);
camel_message_info_ref (mi);
#include <camel/camel-folder-summary.h>
-#define CAMEL_VEE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_vee_summary_get_type (), CamelVeeSummary)
-#define CAMEL_VEE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vee_summary_get_type (), CamelVeeSummaryClass)
-#define CAMEL_IS_VEE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_vee_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_VEE_SUMMARY \
+ (camel_vee_summary_get_type ())
+#define CAMEL_VEE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_VEE_SUMMARY, CamelVeeSummary))
+#define CAMEL_VEE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_VEE_SUMMARY, CamelVeeSummaryClass))
+#define CAMEL_IS_VEE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_VEE_SUMMARY))
+#define CAMEL_IS_VEE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_VEE_SUMMARY))
+#define CAMEL_VEE_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_VEE_SUMMARY, CamelVeeSummaryClass))
G_BEGIN_DECLS
CamelFolderSummaryClass parent_class;
};
-CamelType camel_vee_summary_get_type (void);
+GType camel_vee_summary_get_type (void);
CamelFolderSummary *
camel_vee_summary_new (struct _CamelFolder *parent);
CamelVeeMessageInfo *
gboolean delete;
};
-static CamelVeeFolderClass *camel_vtrash_folder_parent;
+G_DEFINE_TYPE (CamelVTrashFolder, camel_vtrash_folder, CAMEL_TYPE_VEE_FOLDER)
static void
transfer_messages (CamelFolder *folder,
for (i=0;i<md->uids->len;i++)
g_free(md->uids->pdata[i]);
g_ptr_array_free(md->uids, TRUE);
- camel_object_unref (md->folder);
+ g_object_unref (md->folder);
g_free(md);
}
arg->tag = (tag & CAMEL_ARG_TYPE) | CAMEL_ARG_IGNORE;
}
- return CAMEL_OBJECT_CLASS (camel_vtrash_folder_parent)->getv (object, ex, args);
+ return CAMEL_OBJECT_CLASS (camel_vtrash_folder_parent_class)->getv (object, ex, args);
}
static gboolean
md = g_hash_table_lookup(batch, mi->summary->folder);
if (md == NULL) {
md = g_malloc0(sizeof(*md));
- md->folder = camel_object_ref (mi->summary->folder);
+ md->folder = g_object_ref (mi->summary->folder);
md->uids = g_ptr_array_new();
md->dest = dest;
g_hash_table_insert(batch, mi->summary->folder, md);
CamelObjectClass *camel_object_class;
CamelFolderClass *folder_class;
- camel_vtrash_folder_parent = CAMEL_VEE_FOLDER_CLASS(camel_vee_folder_get_type());
-
/* Not required from here on. We don't count */
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = vtrash_folder_getv;
{
}
-CamelType
-camel_vtrash_folder_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_vee_folder_get_type (),
- "CamelVTrashFolder",
- sizeof (CamelVTrashFolder),
- sizeof (CamelVTrashFolderClass),
- (CamelObjectClassInitFunc) camel_vtrash_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_vtrash_folder_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_vtrash_folder_new:
* @parent_store: the parent #CamelVeeStore object
g_assert(type < CAMEL_VTRASH_FOLDER_LAST);
- vtrash = (CamelVTrashFolder *)camel_object_new(camel_vtrash_folder_get_type());
+ vtrash = g_object_new (CAMEL_TYPE_VTRASH_FOLDER, NULL);
camel_vee_folder_construct(CAMEL_VEE_FOLDER (vtrash), parent_store, vdata[type].full_name, _(vdata[type].name),
CAMEL_STORE_FOLDER_PRIVATE|CAMEL_STORE_FOLDER_CREATE|CAMEL_STORE_VEE_FOLDER_AUTO|CAMEL_STORE_VEE_FOLDER_SPECIAL);
#include <camel/camel-folder.h>
#include <camel/camel-vee-folder.h>
-#define CAMEL_VTRASH_FOLDER(obj) CAMEL_CHECK_CAST (obj, camel_vtrash_folder_get_type (), CamelVTrashFolder)
-#define CAMEL_VTRASH_FOLDER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vtrash_folder_get_type (), CamelVTrashFolderClass)
-#define CAMEL_IS_VTRASH_FOLDER(obj) CAMEL_CHECK_TYPE (obj, camel_vtrash_folder_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_VTRASH_FOLDER \
+ (camel_vtrash_folder_get_type ())
+#define CAMEL_VTRASH_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_VTRASH_FOLDER, CamelVTrashFolder))
+#define CAMEL_VTRASH_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_VTRASH_FOLDER, CamelVTrashFolderClass))
+#define CAMEL_IS_VTRASH_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_VTRASH_FOLDER))
+#define CAMEL_IS_VTRASH_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_VTRASH_FOLDER))
+#define CAMEL_VTRASH_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_VTRASH_FOLDER, CamelVTrashFolderClass))
#define CAMEL_VTRASH_NAME ".#evolution/Trash"
#define CAMEL_VJUNK_NAME ".#evolution/Junk"
CamelVeeFolderClass parent_class;
};
-CamelType camel_vtrash_folder_get_type (void);
+GType camel_vtrash_folder_get_type (void);
CamelFolder * camel_vtrash_folder_new (CamelStore *parent_store,
camel_vtrash_folder_t type);
camel_debug_init();
- /* initialise global camel_object_type */
- camel_object_get_type ();
-
#ifdef HAVE_NSS
if (nss_init) {
gchar *nss_configdir;
/* set this certdb as the default db */
camel_certdb_set_default (certdb);
- camel_object_unref (certdb);
+ g_object_unref (certdb);
initialised = TRUE;
#include <camel/camel-net-utils.h>
#include <camel/camel-nntp-address.h>
#include <camel/camel-object.h>
+#include <camel/camel-object-bag.h>
#include <camel/camel-offline-folder.h>
#include <camel/camel-offline-journal.h>
#include <camel/camel-offline-store.h>
#define MAX_ATTACHMENT_SIZE 1*1024*1024 /*In bytes*/
#define GROUPWISE_BULK_DELETE_LIMIT 100
-static gpointer camel_groupwise_folder_parent_class;
+#define CAMEL_GROUPWISE_FOLDER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_GROUPWISE_FOLDER, CamelGroupwiseFolderPrivate))
struct _CamelGroupwiseFolderPrivate {
static const gchar * GET_ITEM_VIEW_WITH_CACHE = "peek default recipient threading attachments subject status priority startDate created delivered size recurrenceKey message notification";
static const gchar * GET_ITEM_VIEW_WITHOUT_CACHE = "peek default recipient threading hasAttachment subject status priority startDate created delivered size recurrenceKey";
+G_DEFINE_TYPE (CamelGroupwiseFolder, camel_groupwise_folder, CAMEL_TYPE_OFFLINE_FOLDER)
+
static gchar *
groupwise_get_filename (CamelFolder *folder, const gchar *uid, CamelException *ex)
{
camel_exception_setv (
ex, CAMEL_EXCEPTION_USER_CANCEL,
_("User canceled"));
- camel_object_unref (msg);
- camel_object_unref (cache_stream);
- camel_object_unref (stream);
+ g_object_unref (msg);
+ g_object_unref (cache_stream);
+ g_object_unref (stream);
camel_message_info_free (&mi->info);
return NULL;
} else {
ex, CAMEL_EXCEPTION_SYSTEM,
_("Cannot get message %s: %s"),
uid, g_strerror (errno));
- camel_object_unref (msg);
+ g_object_unref (msg);
msg = NULL;
}
}
- camel_object_unref (cache_stream);
+ g_object_unref (cache_stream);
}
- camel_object_unref (stream);
+ g_object_unref (stream);
if (msg != NULL) {
camel_message_info_free (&mi->info);
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) msg, cache_stream) == -1
|| camel_stream_flush (cache_stream) == -1)
camel_data_cache_remove (gw_folder->cache, "cache", uid, NULL);
- camel_object_unref (cache_stream);
+ g_object_unref (cache_stream);
}
CAMEL_GROUPWISE_FOLDER_REC_UNLOCK (folder, cache_lock);
camel_multipart_set_boundary (multipart, NULL);
camel_multipart_add_part (multipart, part);
- camel_object_unref (part);
+ g_object_unref (part);
}
/* Set the recipients list in the message from the item */
gchar *summary_file, *state_file, *journal_file;
gchar *short_name;
- folder = CAMEL_FOLDER (camel_object_new(camel_groupwise_folder_get_type ()) );
+ folder = g_object_new (CAMEL_TYPE_GROUPWISE_FOLDER, NULL);
gw_folder = CAMEL_GROUPWISE_FOLDER(folder);
short_name = strrchr (folder_name, '/');
folder->summary = camel_groupwise_summary_new(folder, summary_file);
g_free(summary_file);
if (!folder->summary) {
- camel_object_unref (CAMEL_OBJECT (folder));
+ g_object_unref (CAMEL_OBJECT (folder));
camel_exception_setv (
ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not load summary for %s"), folder_name);
gw_folder->cache = camel_data_cache_new (folder_dir ,ex);
if (!gw_folder->cache) {
- camel_object_unref (folder);
+ g_object_unref (folder);
return NULL;
}
gw_folder->journal = camel_groupwise_journal_new (gw_folder, journal_file);
g_free (journal_file);
if (!gw_folder->journal) {
- camel_object_unref (folder);
+ g_object_unref (folder);
return NULL;
}
gw_folder->search = camel_folder_search_new ();
if (!gw_folder->search) {
- camel_object_unref (folder);
+ g_object_unref (folder);
return NULL;
}
g_free (m->t_str);
g_free (m->container_id);
- camel_object_unref (m->folder);
+ g_object_unref (m->folder);
g_slist_foreach (m->slist, (GFunc) g_free, NULL);
g_slist_free (m->slist);
m->slist = NULL;
msg->cnc = cnc;
msg->t_str = g_strdup (old_sync_time);
msg->container_id = g_strdup (container_id);
- msg->folder = camel_object_ref (folder);
+ msg->folder = g_object_ref (folder);
camel_session_thread_queue (session, &msg->msg, 0);
/*thread creation and queueing done*/
}
/* add to cache if its a new message*/
t_cache_stream = camel_data_cache_get (gw_folder->cache, "cache", id, ex);
if (t_cache_stream) {
- camel_object_unref (t_cache_stream);
+ g_object_unref (t_cache_stream);
mail_msg = groupwise_folder_item_to_msg (folder, item, ex);
if (mail_msg)
if ((cache_stream = camel_data_cache_add (gw_folder->cache, "cache", id, NULL))) {
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) mail_msg, cache_stream) == -1 || camel_stream_flush (cache_stream) == -1)
camel_data_cache_remove (gw_folder->cache, "cache", id, NULL);
- camel_object_unref (cache_stream);
+ g_object_unref (cache_stream);
}
- camel_object_unref (mail_msg);
+ g_object_unref (mail_msg);
CAMEL_GROUPWISE_FOLDER_REC_UNLOCK (folder, cache_lock);
}
/******************** Caching stuff ends *************************/
if (has_mime_822 && body) {
temp_stream = camel_stream_mem_new_with_buffer (body, body_len);
if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *) msg, temp_stream) == -1) {
- camel_object_unref (msg);
- camel_object_unref (temp_stream);
+ g_object_unref (msg);
+ g_object_unref (temp_stream);
msg = NULL;
goto end;
}
camel_medium_set_content (CAMEL_MEDIUM (part),CAMEL_DATA_WRAPPER(temp_msg));
camel_multipart_add_part (multipart,part);
- camel_object_unref (temp_msg);
- camel_object_unref (part);
+ g_object_unref (temp_msg);
+ g_object_unref (part);
}
g_object_unref (temp_item);
} else {
camel_multipart_set_boundary(multipart, NULL);
camel_multipart_add_part (multipart, part);
- camel_object_unref (part);
+ g_object_unref (part);
g_free (attachment);
} /* if attachment */
}
camel_medium_add_header ( CAMEL_MEDIUM (msg), "Security", e_gw_item_get_security(item));
camel_medium_set_content (CAMEL_MEDIUM (msg), CAMEL_DATA_WRAPPER(multipart));
- camel_object_unref (multipart);
+ g_object_unref (multipart);
end:
if (body)
break;
camel_groupwise_journal_transfer (journal, (CamelGroupwiseFolder *)source, message, info, uids->pdata[i], NULL, ex);
- camel_object_unref (message);
+ g_object_unref (message);
if (camel_exception_is_set (ex))
break;
}
static void
-groupwise_folder_finalize (CamelGroupwiseFolder *gw_folder)
+groupwise_folder_dispose (GObject *object)
{
- g_free (gw_folder->priv);
+ CamelGroupwiseFolder *gw_folder = CAMEL_GROUPWISE_FOLDER (object);
+
+ if (gw_folder->cache != NULL) {
+ g_object_unref (gw_folder->cache);
+ gw_folder->cache = NULL;
+ }
- if (gw_folder->cache)
- camel_object_unref (gw_folder->cache);
- if (gw_folder->search)
- camel_object_unref (gw_folder->search);
+ if (gw_folder->search != NULL) {
+ g_object_unref (gw_folder->search);
+ gw_folder->search = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_groupwise_folder_parent_class)->dispose (object);
}
static void
camel_groupwise_folder_class_init (CamelGroupwiseFolderClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
CamelFolderClass *folder_class;
- camel_groupwise_folder_parent_class = CAMEL_OFFLINE_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_offline_folder_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelGroupwiseFolderPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = groupwise_folder_dispose;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = gw_getv;
{
CamelFolder *folder = CAMEL_FOLDER (gw_folder);
- gw_folder->priv = g_malloc0 (sizeof(*gw_folder->priv));
+ gw_folder->priv = CAMEL_GROUPWISE_FOLDER_GET_PRIVATE (gw_folder);
folder->permanent_flags = CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_DELETED |
CAMEL_MESSAGE_DRAFT | CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_SEEN;
gw_folder->need_rescan = TRUE;
}
-CamelType
-camel_groupwise_folder_get_type (void)
-{
- static CamelType camel_groupwise_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_groupwise_folder_type == CAMEL_INVALID_TYPE) {
- camel_groupwise_folder_type =
- camel_type_register (camel_offline_folder_get_type (),
- "CamelGroupwiseFolder",
- sizeof (CamelGroupwiseFolder),
- sizeof (CamelGroupwiseFolderClass),
- (CamelObjectClassInitFunc) camel_groupwise_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_folder_init,
- (CamelObjectFinalizeFunc) groupwise_folder_finalize);
- }
-
- return camel_groupwise_folder_type;
-}
-
static gint
gw_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
{
#include "camel-groupwise-summary.h"
-#define CAMEL_GROUPWISE_FOLDER_TYPE (camel_groupwise_folder_get_type ())
-#define CAMEL_GROUPWISE_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_GROUPWISE_FOLDER_TYPE, CamelGroupwiseFolder))
-#define CAMEL_GROUPWISE_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_GROUPWISE_FOLDER_TYPE, CamelGroupwiseFolderClass))
-#define CAMEL_IS_GROUPWISE_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_GROUPWISE_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_GROUPWISE_FOLDER \
+ (camel_groupwise_folder_get_type ())
+#define CAMEL_GROUPWISE_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GROUPWISE_FOLDER, CamelGroupwiseFolder))
+#define CAMEL_GROUPWISE_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GROUPWISE_FOLDER, CamelGroupwiseFolderClass))
+#define CAMEL_IS_GROUPWISE_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GROUPWISE_FOLDER))
+#define CAMEL_IS_GROUPWISE_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GROUPWISE_FOLDER))
+#define CAMEL_GROUPWISE_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_GROUPWISE_FOLDER, CamelGroupwiseFolderClass))
G_BEGIN_DECLS
} ;
-CamelType camel_groupwise_folder_get_type (void);
+GType camel_groupwise_folder_get_type (void);
/* implemented */
CamelFolder * camel_gw_folder_new(CamelStore *store, const gchar *folder_dir, const gchar *folder_name, CamelException *ex);
static gint groupwise_entry_write (CamelOfflineJournal *journal, CamelDListNode *entry, FILE *out);
static gint groupwise_entry_play (CamelOfflineJournal *journal, CamelDListNode *entry, CamelException *ex);
-static gpointer camel_groupwise_journal_parent_class;
+G_DEFINE_TYPE (CamelGroupwiseJournal, camel_groupwise_journal, CAMEL_TYPE_OFFLINE_JOURNAL)
static void
camel_groupwise_journal_class_init (CamelGroupwiseJournalClass *class)
{
CamelOfflineJournalClass *offline_journal_class;
- camel_groupwise_journal_parent_class = (CamelOfflineJournalClass *) camel_type_get_global_classfuncs (CAMEL_TYPE_OFFLINE_JOURNAL);
-
offline_journal_class = CAMEL_OFFLINE_JOURNAL_CLASS (class);
offline_journal_class->entry_free = groupwise_entry_free;
offline_journal_class->entry_load = groupwise_entry_load;
{
}
-CamelType
-camel_groupwise_journal_get_type (void)
-{
- static CamelType type = NULL;
-
- if (!type) {
- type = camel_type_register (camel_offline_journal_get_type (),
- "CamelGroupwiseJournal",
- sizeof (CamelGroupwiseJournal),
- sizeof (CamelGroupwiseJournalClass),
- (CamelObjectClassInitFunc) camel_groupwise_journal_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_journal_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
static void
groupwise_entry_free (CamelOfflineJournal *journal, CamelDListNode *entry)
{
message = camel_mime_message_new ();
if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *) message, stream) == -1) {
- camel_object_unref (message);
- camel_object_unref (stream);
+ g_object_unref (message);
+ g_object_unref (stream);
goto done;
}
- camel_object_unref (stream);
+ g_object_unref (stream);
if (!(info = camel_folder_summary_uid (folder->summary, entry->uid))) {
/* Note: this should never happen, but rather than crash lets make a new info */
success = camel_folder_append_message (folder, message, info, NULL, ex);
camel_message_info_free (info);
- camel_object_unref (message);
+ g_object_unref (message);
if (!success)
return -1;
g_ptr_array_free (xuids, TRUE);
g_ptr_array_free (uids, TRUE);
- camel_object_unref (src);
+ g_object_unref (src);
} else if (!name) {
camel_exception_setv (
ex, CAMEL_EXCEPTION_SYSTEM,
g_return_val_if_fail (CAMEL_IS_GROUPWISE_FOLDER (folder), NULL);
- journal = (CamelOfflineJournal *) camel_object_new (camel_groupwise_journal_get_type ());
+ journal = g_object_new (CAMEL_TYPE_OFFLINE_JOURNAL, NULL);
camel_offline_journal_construct (journal, (CamelFolder *) folder, filename);
return journal;
g_strerror (errno));
camel_data_cache_remove (groupwise_folder->cache, "cache", uid, NULL);
folder->summary->nextuid--;
- camel_object_unref (cache);
+ g_object_unref (cache);
g_free (uid);
return FALSE;
}
- camel_object_unref (cache);
+ g_object_unref (cache);
info = camel_folder_summary_info_new_from_message (folder->summary, message, NULL);
camel_pstring_free(info->uid);
#include <stdarg.h>
#include <camel/camel.h>
-#define CAMEL_TYPE_GROUPWISE_JOURNAL (camel_groupwise_journal_get_type ())
-#define CAMEL_GROUPWISE_JOURNAL(obj) (CAMEL_CHECK_CAST ((obj), CAMEL_TYPE_GROUPWISE_JOURNAL, CamelGroupwiseJournal))
-#define CAMEL_GROUPWISE_JOURNAL_CLASS(klass) (CAMEL_CHECK_CLASS_CAST ((klass), CAMEL_TYPE_GROUPWISE_JOURNAL, CamelGroupwiseJournalClass))
-#define CAMEL_IS_GROUPWISE_JOURNAL(obj) (CAMEL_CHECK_TYPE ((obj), CAMEL_TYPE_GROUPWISE_JOURNAL))
-#define CAMEL_IS_GROUPWISE_JOURNAL_CLASS(klass) (CAMEL_CHECK_CLASS_TYPE ((klass), CAMEL_TYPE_GROUPWISE_JOURNAL))
-#define CAMEL_GROUPWISE_JOURNAL_GET_CLASS(obj) (CAMEL_CHECK_GET_CLASS ((obj), CAMEL_TYPE_GROUPWISE_JOURNAL, CamelGroupwiseJournalClass))
+/* Standard GObject macros */
+#define CAMEL_TYPE_GROUPWISE_JOURNAL \
+ (camel_groupwise_journal_get_type ())
+#define CAMEL_GROUPWISE_JOURNAL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GROUPWISE_JOURNAL, CamelGroupwiseJournal))
+#define CAMEL_GROUPWISE_JOURNAL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GROUPWISE_JOURNAL, CamelGroupwiseJournalClass))
+#define CAMEL_IS_GROUPWISE_JOURNAL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GROUPWISE_JOURNAL))
+#define CAMEL_IS_GROUPWISE_JOURNAL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GROUPWISE_JOURNAL))
+#define CAMEL_GROUPWISE_JOURNAL_GET_CLASS(obj) \
+ (CAMEL_CHECK_GET_CLASS \
+ ((obj), CAMEL_TYPE_GROUPWISE_JOURNAL, CamelGroupwiseJournalClass))
G_BEGIN_DECLS
};
-CamelType camel_groupwise_journal_get_type (void);
+GType camel_groupwise_journal_get_type (void);
CamelOfflineJournal *camel_groupwise_journal_new (struct _CamelGroupwiseFolder *folder, const gchar *filename);
static const gchar *store_info_string(CamelStoreSummary *s, const CamelStoreInfo *mi, gint type);
CamelGroupwiseStoreNamespace *camel_groupwise_store_summary_namespace_find_full(CamelGroupwiseStoreSummary *s, const gchar *full);
-static gpointer camel_groupwise_store_summary_parent_class;
+G_DEFINE_TYPE (CamelGroupwiseStoreSummary, camel_groupwise_store_summary, CAMEL_TYPE_STORE_SUMMARY)
static void
camel_groupwise_store_summary_class_init (CamelGroupwiseStoreSummaryClass *class)
{
CamelStoreSummaryClass *store_summary_class;
- camel_groupwise_store_summary_parent_class = (CamelStoreSummaryClass *)camel_store_summary_get_type();
-
store_summary_class = CAMEL_STORE_SUMMARY_CLASS (class);
store_summary_class->summary_header_load = summary_header_load;
store_summary_class->summary_header_save = summary_header_save;
gw_summary->version = CAMEL_GW_STORE_SUMMARY_VERSION;
}
-CamelType
-camel_groupwise_store_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_store_summary_get_type (),
- "CamelGroupwiseStoreSummary",
- sizeof (CamelGroupwiseStoreSummary),
- sizeof (CamelGroupwiseStoreSummaryClass),
- (CamelObjectClassInitFunc) camel_groupwise_store_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_store_summary_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
CamelGroupwiseStoreSummary *
camel_groupwise_store_summary_new (void)
{
- return CAMEL_GW_STORE_SUMMARY ( camel_object_new (camel_groupwise_store_summary_get_type ()));
+ return g_object_new (CAMEL_TYPE_GROUPWISE_STORE_SUMMARY, NULL);
}
CamelGroupwiseStoreInfo *
#include <camel/camel.h>
-#define CAMEL_GW_STORE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_groupwise_store_summary_get_type (), CamelGroupwiseStoreSummary)
-#define CAMEL_GW_STORE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_groupwise_store_summary_get_type (), CamelGroupwiseStoreSummaryClass)
-#define CAMEL_IS_GW_STORE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_groupwise_store_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_GROUPWISE_STORE_SUMMARY \
+ (camel_groupwise_store_summary_get_type ())
+#define CAMEL_GROUPWISE_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE_SUMMARY, CamelGroupwiseStoreSummary))
+#define CAMEL_GROUPWISE_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GROUPWISE_STORE_SUMMARY, CamelGroupwiseStoreSummaryClass))
+#define CAMEL_IS_GROUPWISE_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE_SUMMARY))
+#define CAMEL_IS_GROUPWISE_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GROUPWISE_STORE_SUMMARY))
+#define CAMEL_GROUPWISE_STORE_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE_SUMMARY, CamelGroupwiseStoreSummaryClass))
G_BEGIN_DECLS
CamelStoreSummaryClass summary_class;
};
-CamelType camel_groupwise_store_summary_get_type (void);
+GType camel_groupwise_store_summary_get_type (void);
CamelGroupwiseStoreSummary *camel_groupwise_store_summary_new (void);
CamelGroupwiseStoreInfo *camel_groupwise_store_summary_full_name(CamelGroupwiseStoreSummary *s, const gchar *full_name);
CamelGroupwiseStoreInfo *camel_groupwise_store_summary_add_from_full(CamelGroupwiseStoreSummary *s, const gchar *full, gchar dir_sep);
#define JUNK_ENABLE 1
#define JUNK_PERSISTENCE 14
+#define CAMEL_GROUPWISE_STORE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE, CamelGroupwiseStorePrivate))
+
const gchar * CREATE_CURSOR_VIEW = "peek id default recipient threading hasAttachment subject status priority startDate created delivered size recurrenceKey";
struct _CamelGroupwiseStorePrivate {
EGwConnection *cnc;
};
-static gpointer camel_groupwise_store_parent_class;
-
extern CamelServiceAuthType camel_groupwise_password_authtype; /*for the query_auth_types function*/
static CamelFolderInfo *convert_to_folder_info (CamelGroupwiseStore *store, EGwContainer *container, const gchar *url, CamelException *ex);
static gboolean groupwise_folders_sync (CamelGroupwiseStore *store, CamelException *ex);
static gint match_path(const gchar *path, const gchar *name);
+G_DEFINE_TYPE (CamelGroupwiseStore, camel_groupwise_store, CAMEL_TYPE_OFFLINE_STORE)
+
static gboolean
groupwise_store_construct (CamelService *service, CamelSession *session,
CamelProvider *provider, CamelURL *url,
camel_service_lock (CAMEL_SERVICE (groupwise_store), CS_REC_CONNECT_LOCK);
if (groupwise_store->current_folder) {
- camel_object_unref (groupwise_store->current_folder);
+ g_object_unref (groupwise_store->current_folder);
groupwise_store->current_folder = NULL;
}
if (folder)
- groupwise_store->current_folder = camel_object_ref (folder);
+ groupwise_store->current_folder = g_object_ref (folder);
camel_service_unlock (CAMEL_SERVICE (groupwise_store), CS_REC_CONNECT_LOCK);
}
camel_service_construct (service, service->session, service->provider, service->url, ex);
}
+
camel_service_lock (service, CS_REC_CONNECT_LOCK);
if (priv->cnc) {
CamelGroupwiseStore *groupwise_store = CAMEL_GROUPWISE_STORE (service);
CamelGroupwiseStorePrivate *priv = groupwise_store->priv;
- g_print ("camel_groupwise_store_finalize\n");
if (groupwise_store->summary) {
camel_store_summary_save ((CamelStoreSummary *)groupwise_store->summary);
- camel_object_unref (groupwise_store->summary);
+ g_object_unref (groupwise_store->summary);
}
if (priv) {
camel_folder_summary_save_to_db (folder->summary, ex);
camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_INVALID, _("Authentication failed"));
camel_operation_end (NULL);
- camel_object_unref (folder);
+ g_object_unref (folder);
g_free (container_id);
return NULL;*/
}
{
struct _store_refresh_msg *m = (struct _store_refresh_msg *)msg;
- camel_object_unref (m->store);
+ g_object_unref (m->store);
camel_exception_clear (&m->ex);
}
}
static void
-groupwise_store_finalize (CamelGroupwiseStore *groupwise_store)
+groupwise_store_dispose (GObject *object)
{
- CamelGroupwiseStorePrivate *priv = groupwise_store->priv;
+ CamelGroupwiseStore *groupwise_store;
+
+ groupwise_store = CAMEL_GROUPWISE_STORE (object);
if (groupwise_store->summary != NULL) {
- camel_store_summary_save ((CamelStoreSummary *)groupwise_store->summary);
- camel_object_unref (groupwise_store->summary);
+ camel_store_summary_save (
+ CAMEL_STORE_SUMMARY (groupwise_store->summary));
+ g_object_unref (groupwise_store->summary);
+ groupwise_store->summary = NULL;
}
+ if (groupwise_store->priv->cnc != NULL) {
+ g_object_unref (groupwise_store->priv->cnc);
+ groupwise_store->priv->cnc = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_groupwise_store_parent_class)->dispose (object);
+}
+
+static void
+groupwise_store_finalize (GObject *object)
+{
+ CamelGroupwiseStore *groupwise_store;
+
+ groupwise_store = CAMEL_GROUPWISE_STORE (object);
+
g_free (groupwise_store->priv->user);
g_free (groupwise_store->priv->server_name);
g_free (groupwise_store->priv->port);
g_free (groupwise_store->priv->storage_path);
g_free (groupwise_store->root_container);
-
- if (E_IS_GW_CONNECTION (groupwise_store->priv->cnc)) {
- g_object_unref (groupwise_store->priv->cnc);
- groupwise_store->priv->cnc = NULL;
- }
-
if (groupwise_store->priv->id_hash != NULL)
- g_hash_table_destroy (priv->id_hash);
+ g_hash_table_destroy (groupwise_store->priv->id_hash);
if (groupwise_store->priv->name_hash != NULL)
- g_hash_table_destroy (priv->name_hash);
+ g_hash_table_destroy (groupwise_store->priv->name_hash);
if (groupwise_store->priv->parent_hash != NULL)
- g_hash_table_destroy (priv->parent_hash);
+ g_hash_table_destroy (groupwise_store->priv->parent_hash);
- g_free (groupwise_store->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_groupwise_store_parent_class)->finalize (object);
}
static void
camel_groupwise_store_class_init (CamelGroupwiseStoreClass *class)
{
+ GObjectClass *object_class;
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_groupwise_store_parent_class = CAMEL_OFFLINE_STORE_CLASS (camel_type_get_global_classfuncs (camel_offline_store_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelGroupwiseStorePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = groupwise_store_dispose;
+ object_class->finalize = groupwise_store_finalize;
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = groupwise_store_construct;
static void
camel_groupwise_store_init (CamelGroupwiseStore *groupwise_store)
{
- groupwise_store->priv = g_new0 (CamelGroupwiseStorePrivate, 1);
+ groupwise_store->priv =
+ CAMEL_GROUPWISE_STORE_GET_PRIVATE (groupwise_store);
d("in groupwise store init\n");
groupwise_store->priv->server_name = NULL;
groupwise_store->priv->cnc = NULL;
groupwise_store->current_folder = NULL;
}
-
-CamelType
-camel_groupwise_store_get_type (void)
-{
- static CamelType camel_groupwise_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_groupwise_store_type == CAMEL_INVALID_TYPE) {
- camel_groupwise_store_type =
- camel_type_register (camel_offline_store_get_type (),
- "CamelGroupwiseStore",
- sizeof (CamelGroupwiseStore),
- sizeof (CamelGroupwiseStoreClass),
- (CamelObjectClassInitFunc) camel_groupwise_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_store_init,
- (CamelObjectFinalizeFunc) groupwise_store_finalize);
- }
-
- return camel_groupwise_store_type;
-}
#include <e-gw-connection.h>
#include <e-gw-container.h>
-#define CAMEL_GROUPWISE_STORE_TYPE (camel_groupwise_store_get_type ())
-#define CAMEL_GROUPWISE_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_GROUPWISE_STORE_TYPE, CamelGroupwiseStore))
-#define CAMEL_GROUPWISE_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_GROUPWISE_STORE_TYPE, CamelGroupwiseStoreClass))
-#define CAMEL_IS_GROUPWISE_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_GROUPWISE_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_GROUPWISE_STORE \
+ (camel_groupwise_store_get_type ())
+#define CAMEL_GROUPWISE_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE, CamelGroupwiseStore))
+#define CAMEL_GROUPWISE_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GROUPWISE_STORE, CamelGroupwiseStoreClass))
+#define CAMEL_IS_GROUPWISE_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE))
+#define CAMEL_IS_GROUPWISE_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GROUPWISE_STORE))
+#define CAMEL_GROUPWISE_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_GROUPWISE_STORE, CamelGroupwiseStoreClass))
#define GW_PARAM_FILTER_INBOX (1 << 0)
CamelOfflineStoreClass parent_class;
};
-CamelType camel_groupwise_store_get_type (void);
+GType camel_groupwise_store_get_type (void);
gchar * groupwise_get_name(CamelService *service, gboolean brief);
/*IMplemented*/
/*End of Prototypes*/
-static gpointer camel_groupwise_summary_parent_class;
+G_DEFINE_TYPE (CamelGroupwiseSummary, camel_groupwise_summary, CAMEL_TYPE_FOLDER_SUMMARY)
static CamelMessageInfo *
gw_message_info_clone(CamelFolderSummary *s, const CamelMessageInfo *mi)
{
CamelFolderSummaryClass *folder_summary_class;
- camel_groupwise_summary_parent_class = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type()));
-
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->message_info_size = sizeof (CamelGroupwiseMessageInfo);
folder_summary_class->content_info_size = sizeof (CamelGroupwiseMessageContentInfo);
summary->meta_summary->uid_len = 2048;
}
-CamelType
-camel_groupwise_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(
- camel_folder_summary_get_type(), "CamelGroupwiseSummary",
- sizeof (CamelGroupwiseSummary),
- sizeof (CamelGroupwiseSummaryClass),
- (CamelObjectClassInitFunc) camel_groupwise_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_summary_init,
- NULL);
- }
-
- return type;
-}
-
/**
* camel_groupwise_summary_new:
* @filename: the file to store the summary in.
CamelFolderSummary *summary;
CamelException ex;
- summary = CAMEL_FOLDER_SUMMARY (camel_object_new (camel_groupwise_summary_get_type ()));
+ summary = g_object_new (CAMEL_TYPE_GROUPWISE_SUMMARY, NULL);
summary->folder = folder;
camel_folder_summary_set_build_content (summary, TRUE);
camel_folder_summary_set_filename (summary, filename);
#include <camel/camel.h>
-#define CAMEL_GROUPWISE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_groupwise_summary_get_type (), CamelGroupwiseSummary)
-#define CAMEL_GROUPWISE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_groupwise_summary_get_type (), CamelGroupwiseSummaryClass)
-#define CAMEL_IS_GROUPWISE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_groupwise_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_GROUPWISE_SUMMARY \
+ (camel_groupwise_summary_get_type ())
+#define CAMEL_GROUPWISE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GROUPWISE_SUMMARY, CamelGroupwiseSummary))
+#define CAMEL_GROUPWISE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GROUPWISE_SUMMARY, CamelGroupwiseSummaryClass))
+#define CAMEL_IS_GROUPWISE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GROUPWISE_SUMMARY))
+#define CAMEL_IS_GROUPWISE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GROUPWISE_SUMMARY))
+#define CAMEL_GROUPWISE_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_GROUPWISE_SUMMARY, CamelGroupwiseSummaryClass))
G_BEGIN_DECLS
CamelFolderSummaryClass parent_class;
} ;
-CamelType camel_groupwise_summary_get_type (void);
+GType camel_groupwise_summary_get_type (void);
CamelFolderSummary *camel_groupwise_summary_new (struct _CamelFolder *folder, const gchar *filename);
#define REPLY_VIEW "default message attachments threading"
-static gpointer camel_groupwise_transport_parent_class;
+G_DEFINE_TYPE (CamelGroupwiseTransport, camel_groupwise_transport, CAMEL_TYPE_TRANSPORT)
static gboolean
groupwise_transport_connect (CamelService *service,
CamelServiceClass *service_class;
CamelTransportClass *transport_class;
- camel_groupwise_transport_parent_class = CAMEL_TRANSPORT_CLASS (camel_type_get_global_classfuncs (camel_transport_get_type ()));
-
service_class = CAMEL_SERVICE_CLASS (class);
service_class->connect = groupwise_transport_connect;
service_class->get_name = groupwise_transport_get_name;
camel_groupwise_transport_init (CamelGroupwiseTransport *groupwise_transport)
{
}
-
-CamelType
-camel_groupwise_transport_get_type (void)
-{
- static CamelType camel_groupwise_transport_type = CAMEL_INVALID_TYPE;
-
- if (camel_groupwise_transport_type == CAMEL_INVALID_TYPE) {
- camel_groupwise_transport_type =
- camel_type_register (CAMEL_TRANSPORT_TYPE,
- "CamelGroupwiseTransport",
- sizeof (CamelGroupwiseTransport),
- sizeof (CamelGroupwiseTransportClass),
- (CamelObjectClassInitFunc) camel_groupwise_transport_class_init,
- NULL,
- (CamelObjectInitFunc) camel_groupwise_transport_init,
- NULL);
- }
-
- return camel_groupwise_transport_type;
-}
#include <camel/camel.h>
-#define CAMEL_GROUPWISE_TRANSPORT_TYPE (camel_groupwise_transport_get_type ())
-#define CAMEL_GROUPWISE_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_GROUPWISE_TRANSPORT_TYPE, CamelGroupwiseTransport))
-#define CAMEL_GROUPWISE_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_GROUPWISE_TRANSPORT_TYPE, CamelGroupwiseTransportClass))
-#define CAMEL_IS_GROUPWISE_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_GROUPWISE_TRANSPORT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_GROUPWISE_TRANSPORT \
+ (camel_groupwise_transport_get_type ())
+#define CAMEL_GROUPWISE_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_GROUPWISE_TRANSPORT, CamelGroupwiseTransport))
+#define CAMEL_GROUPWISE_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_GROUPWISE_TRANSPORT, CamelGroupwiseTransportClass))
+#define CAMEL_IS_GROUPWISE_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_GROUPWISE_TRANSPORT))
+#define CAMEL_IS_GROUPWISE_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_GROUPWISE_TRANSPORT))
+#define CAMEL_GROUPWISE_TRANSPORT_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_GROUPWISE_TRANSPORT, CamelGroupwiseTransportClass))
G_BEGIN_DECLS
CamelTransportClass parent_class;
};
-CamelType camel_groupwise_transport_get_type (void);
+GType camel_groupwise_transport_get_type (void);
G_END_DECLS
filter = camel_mime_filter_charset_new (charset, "UTF-8");
filtered_stream = camel_stream_filter_new (content);
camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
} else {
/* US-ASCII or UTF-8 */
- filtered_stream = camel_object_ref (content);
+ filtered_stream = g_object_ref (content);
}
camel_data_wrapper_decode_to_stream (dw, filtered_stream);
camel_stream_flush (filtered_stream);
- camel_object_unref (filtered_stream);
+ g_object_unref (filtered_stream);
camel_stream_write (content, "", 1);
e_gw_item_set_message (item, (const gchar *)byte_array->data);
send_as_attachment (cnc, item, content, type, dw, NULL, NULL, &attach_list);
}
- camel_object_unref (content);
+ g_object_unref (content);
}
/*Populate EGwItem*/
/*From Address*/
cid = camel_mime_part_get_content_id (temp_part);
send_as_attachment (cnc, item, temp_content, type, temp_dw, filename, cid, attach_list);
}
- camel_object_unref (temp_content);
+ g_object_unref (temp_content);
continue;
}
filter = camel_mime_filter_charset_new (charset, "UTF-8");
filtered_stream = camel_stream_filter_new (content);
camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
} else {
/* US-ASCII or UTF-8 */
- filtered_stream = camel_object_ref (content);
+ filtered_stream = g_object_ref (content);
}
camel_data_wrapper_decode_to_stream (dw, filtered_stream);
camel_stream_flush (filtered_stream);
- camel_object_unref (filtered_stream);
+ g_object_unref (filtered_stream);
camel_stream_write (content, "", 1);
e_gw_item_set_message (item, (const gchar *) buffer->data);
send_as_attachment (cnc, item, content, type, dw, filename, content_id, attach_list);
}
- camel_object_unref (content);
+ g_object_unref (content);
} /*end of for*/
}
cmd = imap_command_strdup_vprintf (store, fmt, ap);
va_end (ap);
} else {
- camel_object_ref (folder);
+ g_object_ref (folder);
if (store->current_folder)
- camel_object_unref (store->current_folder);
+ g_object_unref (store->current_folder);
store->current_folder = folder;
cmd = imap_command_strdup_printf (store, "SELECT %F", folder->full_name);
}
response = g_new0 (CamelImapResponse, 1);
/*FIXME if (store->current_folder && camel_disco_store_status (CAMEL_DISCO_STORE (store)) != CAMEL_DISCO_STORE_RESYNCING) {
response->folder = store->current_folder;
- camel_object_ref (CAMEL_OBJECT (response->folder));
+ g_object_ref (CAMEL_OBJECT (response->folder));
} */
response->untagged = g_ptr_array_new ();
g_array_free (expunged, TRUE);
}
- camel_object_unref (CAMEL_OBJECT (response->folder));
+ g_object_unref (CAMEL_OBJECT (response->folder));
}
g_free (response);
return;
if (response->folder) {
- camel_object_unref (CAMEL_OBJECT (response->folder));
+ g_object_unref (CAMEL_OBJECT (response->folder));
response->folder = NULL;
}
camel_imap_response_free (store, response);
* octets) */
#define UID_SET_LIMIT (768)
-extern gint camel_application_is_exiting;
+#define CAMEL_IMAP_FOLDER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_IMAP_FOLDER, CamelImapFolderPrivate))
-static gpointer camel_imap_folder_parent_class;
+extern gint camel_application_is_exiting;
static CamelProperty imap_property_list[] = {
{ CAMEL_IMAP_FOLDER_CHECK_FOLDER, "check_folder", N_("Always check for new mail in this folder") },
#define strtok_r(s,sep,lasts) (*(lasts)=strtok((s),(sep)))
#endif
+G_DEFINE_TYPE (CamelImapFolder, camel_imap_folder, CAMEL_TYPE_OFFLINE_FOLDER)
+
static void
-imap_folder_finalize (CamelObject *object)
+imap_folder_dispose (GObject *object)
{
CamelImapFolder *imap_folder;
imap_folder = CAMEL_IMAP_FOLDER (object);
- if (imap_folder->search != NULL)
- camel_object_unref (imap_folder->search);
+ if (imap_folder->search != NULL) {
+ g_object_unref (imap_folder->search);
+ imap_folder->search = NULL;
+ }
- if (imap_folder->cache != NULL)
- camel_object_unref (imap_folder->cache);
+ if (imap_folder->cache != NULL) {
+ g_object_unref (imap_folder->cache);
+ imap_folder->cache = NULL;
+ }
-#ifdef ENABLE_THREADS
- g_static_mutex_free(&imap_folder->priv->search_lock);
- g_static_rec_mutex_free(&imap_folder->priv->cache_lock);
-#endif
- if (imap_folder->priv->ignore_recent)
+ if (imap_folder->priv->ignore_recent != NULL) {
g_hash_table_unref (imap_folder->priv->ignore_recent);
+ imap_folder->priv->ignore_recent = NULL;
+ }
- if (imap_folder->journal) {
+ if (imap_folder->journal != NULL) {
camel_offline_journal_write (imap_folder->journal, NULL);
- camel_object_unref (imap_folder->journal);
+ g_object_unref (imap_folder->journal);
+ imap_folder->journal = NULL;
}
- g_free(imap_folder->priv);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_imap_folder_parent_class)->dispose (object);
+}
+
+static void
+imap_folder_finalize (GObject *object)
+{
+ CamelImapFolder *imap_folder;
+
+ imap_folder = CAMEL_IMAP_FOLDER (object);
+
+#ifdef ENABLE_THREADS
+ g_static_mutex_free (&imap_folder->priv->search_lock);
+ g_static_rec_mutex_free (&imap_folder->priv->cache_lock);
+#endif
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imap_folder_parent_class)->finalize (object);
}
static void
camel_imap_folder_class_init (CamelImapFolderClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
CamelFolderClass *folder_class;
- gint ii;
+ gint i;
- camel_imap_folder_parent_class = CAMEL_OFFLINE_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_offline_folder_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelImapFolderPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = imap_folder_dispose;
+ object_class->finalize = imap_folder_finalize;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = imap_getv;
folder_class->get_filename = imap_get_filename;
/* only localize here, do not create GSList, we do not want to leak */
- for (ii = 0; ii < G_N_ELEMENTS (imap_property_list); ii++)
- imap_property_list[ii].description =
- _(imap_property_list[ii].description);
+ for (i = 0; i < G_N_ELEMENTS (imap_property_list); i++)
+ imap_property_list[i].description =
+ _(imap_property_list[i].description);
}
static void
{
CamelFolder *folder = CAMEL_FOLDER (imap_folder);
- imap_folder->priv = g_malloc0(sizeof(*imap_folder->priv));
+ imap_folder->priv = CAMEL_IMAP_FOLDER_GET_PRIVATE (imap_folder);
folder->permanent_flags = CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_DELETED |
CAMEL_MESSAGE_DRAFT | CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_SEEN;
imap_folder->need_rescan = TRUE;
}
-CamelType
-camel_imap_folder_get_type (void)
-{
- static CamelType camel_imap_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_folder_type == CAMEL_INVALID_TYPE) {
- camel_imap_folder_type =
- camel_type_register (camel_offline_folder_get_type (),
- "CamelImapFolder",
- sizeof (CamelImapFolder),
- sizeof (CamelImapFolderClass),
- (CamelObjectClassInitFunc) camel_imap_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_folder_init,
- (CamelObjectFinalizeFunc) imap_folder_finalize);
- }
-
- return camel_imap_folder_type;
-}
-
static void
replay_offline_journal (CamelImapStore *imap_store, CamelImapFolder *imap_folder, CamelException *ex)
{
return NULL;
}
- folder = CAMEL_FOLDER (camel_object_new (camel_imap_folder_get_type ()));
+ folder = g_object_new (CAMEL_TYPE_IMAP_FOLDER, NULL);
short_name = strrchr (folder_name, '/');
if (short_name)
short_name++;
folder->summary = camel_imap_summary_new (folder, summary_file);
g_free (summary_file);
if (!folder->summary) {
- camel_object_unref (CAMEL_OBJECT (folder));
+ g_object_unref (CAMEL_OBJECT (folder));
camel_exception_setv (
ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not load summary for %s"), folder_name);
imap_folder->cache = camel_imap_message_cache_new (folder_dir, folder->summary, ex);
if (!imap_folder->cache) {
- camel_object_unref (CAMEL_OBJECT (folder));
+ g_object_unref (CAMEL_OBJECT (folder));
return NULL;
}
camel_service_lock (CAMEL_SERVICE (store), CS_REC_CONNECT_LOCK);
if ((store->capabilities & IMAP_CAPABILITY_UIDPLUS) == 0) {
- if (!CAMEL_FOLDER_GET_CLASS (folder)->sync(folder, 0, ex)) {
+ if (!CAMEL_FOLDER_GET_CLASS (folder)->sync (folder, 0, ex)) {
camel_service_unlock (CAMEL_SERVICE (store), CS_REC_CONNECT_LOCK);
return FALSE;
}
CAMEL_STREAM_FILTER (streamfilter), crlf_filter);
camel_data_wrapper_write_to_stream (
CAMEL_DATA_WRAPPER (message), streamfilter);
- camel_object_unref (streamfilter);
- camel_object_unref (crlf_filter);
- camel_object_unref (memstream);
+ g_object_unref (streamfilter);
+ g_object_unref (crlf_filter);
+ g_object_unref (memstream);
/* Some servers don't let us append with (CamelMessageInfo *)custom flags. If the command fails for
whatever reason, assume this is the case and save the state and try again */
if (message) {
camel_imap_summary_add_offline (dest->summary, destuid, message, mi);
- camel_object_unref (CAMEL_OBJECT (message));
+ g_object_unref (CAMEL_OBJECT (message));
} else
camel_imap_summary_add_offline_uncached (dest->summary, destuid, mi);
imap_append_online (dest, message, info, NULL, ex);
camel_folder_free_message_info (source, info);
- camel_object_unref (CAMEL_OBJECT (message));
+ g_object_unref (CAMEL_OBJECT (message));
if (delete_originals && !camel_exception_is_set (ex))
camel_folder_delete_message (source, uid);
i++;
if (stream) {
ret = camel_data_wrapper_construct_from_stream (
CAMEL_DATA_WRAPPER (body_mp), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
if (ret == -1) {
- camel_object_unref ( body_mp);
+ g_object_unref ( body_mp);
return NULL;
}
}
part = camel_mime_part_new ();
ret = camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (part), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
if (ret == -1) {
- camel_object_unref (CAMEL_OBJECT (part));
- camel_object_unref (CAMEL_OBJECT (body_mp));
+ g_object_unref (CAMEL_OBJECT (part));
+ g_object_unref (CAMEL_OBJECT (body_mp));
g_free (child_spec);
return NULL;
}
}
if (!stream || !content) {
- camel_object_unref (CAMEL_OBJECT (body_mp));
+ g_object_unref (CAMEL_OBJECT (body_mp));
g_free (child_spec);
return NULL;
}
}
camel_medium_set_content (CAMEL_MEDIUM (part), content);
- camel_object_unref (content);
+ g_object_unref (content);
camel_multipart_add_part (body_mp, part);
- camel_object_unref (part);
+ g_object_unref (part);
ci = ci->next;
}
msg = camel_mime_message_new ();
ret = camel_data_wrapper_construct_from_stream (
CAMEL_DATA_WRAPPER (msg), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
if (ret == -1) {
- camel_object_unref (CAMEL_OBJECT (msg));
+ g_object_unref (CAMEL_OBJECT (msg));
return NULL;
}
content = get_content (imap_folder, uid, CAMEL_MIME_PART (msg), ci, TRUE, ex);
if (!content) {
- camel_object_unref (CAMEL_OBJECT (msg));
+ g_object_unref (CAMEL_OBJECT (msg));
return NULL;
}
camel_data_wrapper_set_mime_type_field(content, camel_mime_part_get_content_type((CamelMimePart *)msg));
camel_medium_set_content (CAMEL_MEDIUM (msg), content);
- camel_object_unref (CAMEL_OBJECT (content));
+ g_object_unref (CAMEL_OBJECT (content));
return msg;
}
msg = camel_mime_message_new ();
ret = camel_data_wrapper_construct_from_stream (
CAMEL_DATA_WRAPPER (msg), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
if (ret == -1) {
camel_exception_setv (
ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Unable to retrieve message: %s"),
g_strerror (errno));
- camel_object_unref (CAMEL_OBJECT (msg));
+ g_object_unref (CAMEL_OBJECT (msg));
return NULL;
}
/* If its cached in full, just get it as is, this is only a shortcut,
since we get stuff from the cache anyway. It affects a busted connection though. */
if ((stream = camel_imap_folder_fetch_data(imap_folder, uid, "", TRUE, NULL))) {
- camel_object_unref (stream);
+ g_object_unref (stream);
return TRUE;
}
msg = imap_get_message(folder, uid, ex);
if (msg != NULL) {
- camel_object_unref (msg);
+ g_object_unref (msg);
success = TRUE;
}
stream = camel_imap_folder_fetch_data (imap_folder, uid, "", FALSE, ex);
if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
}
*/
msg = camel_mime_message_new ();
if (camel_data_wrapper_construct_from_stream (
CAMEL_DATA_WRAPPER (msg), stream) == -1) {
- camel_object_unref (CAMEL_OBJECT (msg));
+ g_object_unref (CAMEL_OBJECT (msg));
return;
}
bodystructure = g_datalist_get_data (&data, "BODY");
mi = (CamelImapMessageInfo *)camel_folder_summary_info_new_from_message (folder->summary, msg, bodystructure);
- camel_object_unref (CAMEL_OBJECT (msg));
+ g_object_unref (CAMEL_OBJECT (msg));
if ((idate = g_datalist_get_data (&data, "INTERNALDATE")))
mi->info.date_received = decode_internaldate ((const guchar *) idate);
ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Could not find message body in FETCH response."));
} else {
- camel_object_ref (CAMEL_OBJECT (stream));
+ g_object_ref (CAMEL_OBJECT (stream));
g_datalist_clear (&fetch_data);
}
if (stream)
g_datalist_set_data_full (&data, "BODY_PART_STREAM", stream,
- (GDestroyNotify) camel_object_unref);
+ (GDestroyNotify) g_object_unref);
}
return data;
#include "camel-imap-command.h"
#include "camel-imap-message-cache.h"
-#define CAMEL_IMAP_FOLDER_TYPE (camel_imap_folder_get_type ())
-#define CAMEL_IMAP_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_FOLDER_TYPE, CamelImapFolder))
-#define CAMEL_IMAP_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_FOLDER_TYPE, CamelImapFolderClass))
-#define CAMEL_IS_IMAP_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_FOLDER \
+ (camel_imap_folder_get_type ())
+#define CAMEL_IMAP_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_FOLDER, CamelImapFolder))
+#define CAMEL_IMAP_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_FOLDER, CamelImapFolderClass))
+#define CAMEL_IS_IMAP_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_FOLDER))
+#define CAMEL_IS_IMAP_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_FOLDER))
+#define CAMEL_IMAP_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_FOLDER, CamelImapFolderClass))
G_BEGIN_DECLS
gboolean
imap_expunge_uids_resyncing (CamelFolder *folder, GPtrArray *uids, CamelException *ex);
-/* Standard Camel function */
-CamelType camel_imap_folder_get_type (void);
+GType camel_imap_folder_get_type (void);
G_END_DECLS
static void free_uids (GPtrArray *array);
static void close_folder (gpointer name, gpointer folder, gpointer data);
-static gpointer camel_imap_journal_parent_class;
+G_DEFINE_TYPE (CamelIMAPJournal, camel_imap_journal, CAMEL_TYPE_OFFLINE_JOURNAL)
static void
free_uid (gpointer key, gpointer value, gpointer data)
}
static void
-imap_journal_finalize (CamelIMAPJournal *journal)
+imap_journal_finalize (GObject *object)
{
+ CamelIMAPJournal *journal = CAMEL_IMAP_JOURNAL (object);
+
if (journal->folders) {
g_hash_table_foreach (journal->folders, unref_folder, NULL);
g_hash_table_destroy (journal->folders);
g_hash_table_foreach (journal->uidmap, free_uid, NULL);
g_hash_table_destroy (journal->uidmap);
}
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imap_journal_parent_class)->finalize (object);
}
static void
camel_imap_journal_class_init (CamelIMAPJournalClass *class)
{
+ GObjectClass *object_class;
CamelOfflineJournalClass *offline_journal_class;
- camel_imap_journal_parent_class = (CamelOfflineJournalClass *) camel_type_get_global_classfuncs (CAMEL_TYPE_OFFLINE_JOURNAL);
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = imap_journal_finalize;
offline_journal_class = CAMEL_OFFLINE_JOURNAL_CLASS (class);
offline_journal_class->entry_free = imap_entry_free;
journal->uidmap = g_hash_table_new (g_str_hash, g_str_equal);
}
-CamelType
-camel_imap_journal_get_type (void)
-{
- static CamelType type = NULL;
-
- if (!type) {
- type = camel_type_register (camel_offline_journal_get_type (),
- "CamelIMAPJournal",
- sizeof (CamelIMAPJournal),
- sizeof (CamelIMAPJournalClass),
- (CamelObjectClassInitFunc) camel_imap_journal_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_journal_init,
- (CamelObjectFinalizeFunc) imap_journal_finalize);
- }
-
- return type;
-}
-
static void
unref_folder (gpointer key, gpointer value, gpointer data)
{
- camel_object_unref (value);
+ g_object_unref (value);
}
static void
g_return_val_if_fail (CAMEL_IS_IMAP_FOLDER (folder), NULL);
d(g_print ("Creating the journal \n"));
- journal = (CamelOfflineJournal *) camel_object_new (camel_imap_journal_get_type ());
+ journal = g_object_new (CAMEL_TYPE_IMAP_JOURNAL, NULL);
camel_offline_journal_construct (journal, (CamelFolder *) folder, filename);
return journal;
{
g_free (name);
camel_folder_sync (folder, FALSE, NULL);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
void
#include <stdarg.h>
#include <camel/camel.h>
-#define CAMEL_TYPE_IMAP_JOURNAL (camel_imap_journal_get_type ())
-#define CAMEL_IMAP_JOURNAL(obj) (CAMEL_CHECK_CAST ((obj), CAMEL_TYPE_IMAP_JOURNAL, CamelIMAPJournal))
-#define CAMEL_IMAP_JOURNAL_CLASS(klass) (CAMEL_CHECK_CLASS_CAST ((klass), CAMEL_TYPE_IMAP_JOURNAL, CamelIMAPJournalClass))
-#define CAMEL_IS_IMAP_JOURNAL(obj) (CAMEL_CHECK_TYPE ((obj), CAMEL_TYPE_IMAP_JOURNAL))
-#define CAMEL_IS_IMAP_JOURNAL_CLASS(klass) (CAMEL_CHECK_CLASS_TYPE ((klass), CAMEL_TYPE_IMAP_JOURNAL))
-#define CAMEL_IMAP_JOURNAL_GET_CLASS(obj) (CAMEL_CHECK_GET_CLASS ((obj), CAMEL_TYPE_IMAP_JOURNAL, CamelIMAPJournalClass))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_JOURNAL \
+ (camel_imap_journal_get_type ())
+#define CAMEL_IMAP_JOURNAL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_JOURNAL, CamelIMAPJournal))
+#define CAMEL_IMAP_JOURNAL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_JOURNAL, CamelIMAPJournalClass))
+#define CAMEL_IS_IMAP_JOURNAL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_JOURNAL))
+#define CAMEL_IS_IMAP_JOURNAL_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_JOURNAL))
+#define CAMEL_IMAP_JOURNAL_GET_CLASS(obj) \
+ (CAMEL_CHECK_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_JOURNAL, CamelIMAPJournalClass))
G_BEGIN_DECLS
};
-CamelType camel_imap_journal_get_type (void);
+GType camel_imap_journal_get_type (void);
CamelOfflineJournal *camel_imap_journal_new (struct _CamelImapFolder *folder, const gchar *filename);
void camel_imap_journal_log (CamelOfflineJournal *journal, CamelOfflineAction action, ...);
gint found;
};
+G_DEFINE_TYPE (CamelImapMessageCache, camel_imap_message_cache, CAMEL_TYPE_OBJECT)
+
static void
free_part (gpointer key, gpointer value, gpointer data)
{
if (strchr (key, '.')) {
camel_object_unhook_event (value, "finalize",
stream_finalize, data);
- camel_object_unref (value);
+ g_object_unref (value);
} else
g_ptr_array_free (value, TRUE);
}
}
static void
-imap_message_cache_finalize (CamelImapMessageCache *cache)
+imap_message_cache_finalize (GObject *object)
{
+ CamelImapMessageCache *cache;
+
+ cache = CAMEL_IMAP_MESSAGE_CACHE (object);
+
g_free (cache->path);
-\
+
if (cache->parts) {
g_hash_table_foreach (cache->parts, free_part, cache);
g_hash_table_destroy (cache->parts);
if (cache->cached)
g_hash_table_destroy (cache->cached);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imap_message_cache_parent_class)->finalize (object);
}
-CamelType
-camel_imap_message_cache_get_type (void)
+static void
+camel_imap_message_cache_class_init (CamelImapMessageCacheClass *class)
{
- static CamelType camel_imap_message_cache_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_message_cache_type == CAMEL_INVALID_TYPE) {
- camel_imap_message_cache_type = camel_type_register (
- CAMEL_TYPE_OBJECT, "CamelImapMessageCache",
- sizeof (CamelImapMessageCache),
- sizeof (CamelImapMessageCacheClass),
- NULL,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) imap_message_cache_finalize);
- }
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = imap_message_cache_finalize;
+}
- return camel_imap_message_cache_type;
+static void
+camel_imap_message_cache_init (CamelImapMessageCache *imap_message_cache)
+{
}
static void
camel_object_unhook_event (ostream, "finalize",
stream_finalize, cache);
g_hash_table_remove (cache->cached, ostream);
- camel_object_unref (ostream);
+ g_object_unref (ostream);
}
hash_key = okey;
} else {
return NULL;
}
- cache = (CamelImapMessageCache *)camel_object_new (CAMEL_IMAP_MESSAGE_CACHE_TYPE);
+ cache = g_object_new (CAMEL_TYPE_IMAP_MESSAGE_CACHE, NULL);
cache->path = g_strdup (path);
cache->parts = g_hash_table_new (g_str_hash, g_str_equal);
*key = strrchr (*path, '/') + 1;
stream = g_hash_table_lookup (cache->parts, *key);
if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
fd = g_open (*path, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0600);
if (fd == -1) {
{
g_unlink (path);
g_free (path);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
return NULL;
}
insert_abort (path, stream);
} else {
insert_finish (cache, uid, path, key, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
}
}
insert_abort (path, stream);
} else {
insert_finish (cache, uid, path, key, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
}
}
stream = g_hash_table_lookup (cache->parts, key);
if (stream) {
camel_stream_reset (CAMEL_STREAM (stream));
- camel_object_ref (stream);
+ g_object_ref (stream);
g_free (path);
return stream;
}
if (stream) {
camel_object_unhook_event (stream, "finalize",
stream_finalize, cache);
- camel_object_unref (stream);
+ g_object_unref (stream);
g_hash_table_remove (cache->cached, stream);
}
g_hash_table_remove (cache->parts, key);
if ((stream = camel_imap_message_cache_get (source, source_uid, part, ex))) {
camel_imap_message_cache_insert_stream (dest, dest_uid, part, stream, ex);
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_object_unref (CAMEL_OBJECT (stream));
}
}
}
#include <camel/camel.h>
-#define CAMEL_IMAP_MESSAGE_CACHE_TYPE (camel_imap_message_cache_get_type ())
-#define CAMEL_IMAP_MESSAGE_CACHE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_MESSAGE_CACHE_TYPE, CamelImapFolder))
-#define CAMEL_IMAP_MESSAGE_CACHE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_MESSAGE_CACHE_TYPE, CamelImapFolderClass))
-#define CAMEL_IS_IMAP_MESSAGE_CACHE(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_MESSAGE_CACHE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_MESSAGE_CACHE \
+ (camel_imap_message_cache_get_type ())
+#define CAMEL_IMAP_MESSAGE_CACHE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_MESSAGE_CACHE, CamelImapMessageCache))
+#define CAMEL_IMAP_MESSAGE_CACHE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_MESSAGE_CACHE, CamelImapMessageCacheClass))
+#define CAMEL_IS_IMAP_MESSAGE_CACHE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_MESSAGE_CACHE))
+#define CAMEL_IS_IMAP_MESSAGE_CACHE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_MESSAGE_CACHE))
+#define CAMEL_IMAP_MESSAGE_CACHE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_MESSAGE_CACHE, CamelImapMessageCacheClass))
G_BEGIN_DECLS
GPtrArray *uids,
CamelException *ex);
-CamelType camel_imap_message_cache_get_type (void);
+GType camel_imap_message_cache_get_type (void);
G_END_DECLS
static ESExpResult *imap_body_contains (struct _ESExp *f, gint argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static gpointer camel_imap_search_parent_class;
+G_DEFINE_TYPE (CamelImapSearch, camel_imap_search, CAMEL_TYPE_FOLDER_SEARCH)
static void
free_match(CamelImapSearch *is, struct _match_record *mr)
}
static void
-imap_search_finalize (CamelImapSearch *search)
+imap_search_dispose (GObject *object)
{
+ CamelImapSearch *search;
+
+ search = CAMEL_IMAP_SEARCH (object);
+
+ if (search->cache != NULL) {
+ g_object_unref (search->cache);
+ search->cache = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_imap_search_parent_class)->dispose (object);
+}
+
+static void
+imap_search_finalize (GObject *object)
+{
+ CamelImapSearch *search;
struct _match_record *mr;
+ search = CAMEL_IMAP_SEARCH (object);
+
while ((mr = (struct _match_record *)camel_dlist_remtail(&search->matches)))
- free_match(search, mr);
- g_hash_table_destroy(search->matches_hash);
- if (search->cache != NULL)
- camel_object_unref (search->cache);
+ free_match (search, mr);
+
+ g_hash_table_destroy (search->matches_hash);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imap_search_parent_class)->finalize (object);
}
static void
camel_imap_search_class_init (CamelImapSearchClass *class)
{
+ GObjectClass *object_class;
CamelFolderSearchClass *folder_search_class;
- camel_imap_search_parent_class = (CamelFolderSearchClass *)camel_type_get_global_classfuncs (camel_folder_search_get_type ());
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = imap_search_dispose;
+ object_class->finalize = imap_search_finalize;
folder_search_class = CAMEL_FOLDER_SEARCH_CLASS (class);
folder_search_class->body_contains = imap_body_contains;
is->lastuid = 0;
}
-CamelType
-camel_imap_search_get_type (void)
-{
- static CamelType camel_imap_search_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_search_type == CAMEL_INVALID_TYPE) {
- camel_imap_search_type = camel_type_register (
- CAMEL_FOLDER_SEARCH_TYPE, "CamelImapSearch",
- sizeof (CamelImapSearch),
- sizeof (CamelImapSearchClass),
- (CamelObjectClassInitFunc) camel_imap_search_class_init, NULL,
- (CamelObjectInitFunc) camel_imap_search_init,
- (CamelObjectFinalizeFunc) imap_search_finalize);
- }
-
- return camel_imap_search_type;
-}
-
/**
* camel_imap_search_new:
*
CamelFolderSearch *
camel_imap_search_new (const gchar *cachedir)
{
- CamelFolderSearch *new = CAMEL_FOLDER_SEARCH (camel_object_new (camel_imap_search_get_type ()));
+ CamelFolderSearch *new = g_object_new (CAMEL_TYPE_IMAP_SEARCH, NULL);
CamelImapSearch *is = (CamelImapSearch *)new;
camel_folder_search_construct (new);
ret = -1;
}
- camel_object_unref (stream);
+ g_object_unref (stream);
return ret;
}
d(printf(" file format invalid/validity changed\n"));
memset(&header, 0, sizeof(header));
}
- camel_object_unref (stream);
+ g_object_unref (stream);
} else {
d(printf(" no cache entry found\n"));
}
#include <camel/camel.h>
-#define CAMEL_IMAP_SEARCH_TYPE (camel_imap_search_get_type ())
-#define CAMEL_IMAP_SEARCH(obj) CAMEL_CHECK_CAST (obj, camel_imap_search_get_type (), CamelImapSearch)
-#define CAMEL_IMAP_SEARCH_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imap_search_get_type (), CamelImapSearchClass)
-#define CAMEL_IS_IMAP_SEARCH(obj) CAMEL_CHECK_TYPE (obj, camel_imap_search_get_type ())
+/* Standard GObject class */
+#define CAMEL_TYPE_IMAP_SEARCH \
+ (camel_imap_search_get_type ())
+#define CAMEL_IMAP_SEARCH(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_SEARCH, CamelImapSearch))
+#define CAMEL_IMAP_SEARCH_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_SEARCH, CamelImapSearchClass))
+#define CAMEL_IS_IMAP_SEARCH(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_SEARCH))
+#define CAMEL_IS_IMAP_SEARCH_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_SEARCH))
+#define CAMEL_IMAP_SEARCH_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_SEARCH, CamelImapSearchClass))
G_BEGIN_DECLS
};
-CamelType camel_imap_search_get_type (void);
+GType camel_imap_search_get_type (void);
CamelFolderSearch *camel_imap_search_new (const gchar *cachedir);
G_END_DECLS
static const gchar *store_info_string(CamelStoreSummary *, const CamelStoreInfo *, gint);
static void store_info_set_string(CamelStoreSummary *, CamelStoreInfo *, int, const gchar *);
-static gpointer camel_imap_store_summary_parent_class;
+G_DEFINE_TYPE (CamelImapStoreSummary, camel_imap_store_summary, CAMEL_TYPE_STORE_SUMMARY)
static void
camel_imap_store_summary_class_init (CamelImapStoreSummaryClass *class)
{
CamelStoreSummaryClass *store_summary_class;
- camel_imap_store_summary_parent_class = (CamelStoreSummaryClass *)camel_store_summary_get_type();
-
store_summary_class = CAMEL_STORE_SUMMARY_CLASS (class);
store_summary_class->summary_header_load = summary_header_load;
store_summary_class->summary_header_save = summary_header_save;
imap_store_summary->version = CAMEL_IMAP_STORE_SUMMARY_VERSION;
}
-CamelType
-camel_imap_store_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_store_summary_get_type (),
- "CamelImapStoreSummary",
- sizeof (CamelImapStoreSummary),
- sizeof (CamelImapStoreSummaryClass),
- (CamelObjectClassInitFunc) camel_imap_store_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_store_summary_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
/**
* camel_imap_store_summary_new:
*
CamelImapStoreSummary *
camel_imap_store_summary_new (void)
{
- return CAMEL_IMAP_STORE_SUMMARY ( camel_object_new (camel_imap_store_summary_get_type ()));
+ return g_object_new (CAMEL_TYPE_IMAP_STORE_SUMMARY, NULL);
}
/**
#include <camel/camel.h>
-#define CAMEL_IMAP_STORE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_imap_store_summary_get_type (), CamelImapStoreSummary)
-#define CAMEL_IMAP_STORE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imap_store_summary_get_type (), CamelImapStoreSummaryClass)
-#define CAMEL_IS_IMAP_STORE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_imap_store_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_STORE_SUMMARY \
+ (camel_imap_store_summary_get_type ())
+#define CAMEL_IMAP_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_STORE_SUMMARY, CamelImapStoreSummary))
+#define CAMEL_IMAP_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_STORE_SUMMARY, CamelImapStoreSummaryClass))
+#define CAMEL_IS_IMAP_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_STORE_SUMMARY))
+#define CAMEL_IS_IMAP_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_STORE_SUMMARY))
+#define CAMEL_IMAP_STORE_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_STORE_SUMMARY, CamelImapStoreSummaryClass))
G_BEGIN_DECLS
-typedef struct _CamelImapStoreSummary CamelImapStoreSummary;
+typedef struct _CamelImapStoreSummary CamelImapStoreSummary;
typedef struct _CamelImapStoreSummaryClass CamelImapStoreSummaryClass;
+typedef struct _CamelImapStoreSummaryPrivate CamelImapStoreSummaryPrivate;
typedef struct _CamelImapStoreInfo CamelImapStoreInfo;
struct _CamelImapStoreSummary {
CamelStoreSummary summary;
-
- struct _CamelImapStoreSummaryPrivate *priv;
+ CamelImapStoreSummaryPrivate *priv;
/* header info */
guint32 version; /* version of base part of file */
CamelStoreSummaryClass summary_class;
};
-CamelType camel_imap_store_summary_get_type (void);
+GType camel_imap_store_summary_get_type (void);
CamelImapStoreSummary *camel_imap_store_summary_new (void);
void camel_imap_store_summary_namespace_set_main (CamelImapStoreSummary *s, const gchar *full_name, gchar dir_sep);
extern gint camel_verbose_debug;
-static gpointer camel_imap_store_parent_class;
-
static gchar imap_tag_prefix = 'A';
static gboolean construct (CamelService *service, CamelSession *session,
static CamelFolder * get_folder_offline (CamelStore *store, const gchar *folder_name, guint32 flags, CamelException *ex);
static CamelFolderInfo * get_folder_info_offline (CamelStore *store, const gchar *top, guint32 flags, CamelException *ex);
+G_DEFINE_TYPE (CamelImapStore, camel_imap_store, CAMEL_TYPE_OFFLINE_STORE)
+
static gboolean
free_key (gpointer key, gpointer value, gpointer user_data)
{
}
static void
-imap_store_finalize (CamelImapStore *imap_store)
+imap_store_dispose (GObject *object)
{
- /* This frees current_folder, folders, authtypes, streams, and namespace. */
- camel_service_disconnect((CamelService *)imap_store, TRUE, NULL);
+ CamelImapStore *imap_store = CAMEL_IMAP_STORE (object);
if (imap_store->summary != NULL) {
camel_store_summary_save (
CAMEL_STORE_SUMMARY (imap_store->summary));
- camel_object_unref (imap_store->summary);
+ g_object_unref (imap_store->summary);
+ imap_store->summary = NULL;
}
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_imap_store_parent_class)->dispose (object);
+}
+
+static void
+imap_store_finalize (GObject *object)
+{
+ CamelImapStore *imap_store = CAMEL_IMAP_STORE (object);
+
+ /* This frees current_folder, folders, authtypes, streams, and namespace. */
+ camel_service_disconnect (CAMEL_SERVICE (imap_store), TRUE, NULL);
+
g_free (imap_store->base_url);
g_free (imap_store->storage_path);
g_free (imap_store->users_namespace);
g_free (imap_store->custom_headers);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imap_store_parent_class)->finalize (object);
}
static void
camel_imap_store_class_init (CamelImapStoreClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_imap_store_parent_class = CAMEL_OFFLINE_STORE_CLASS (camel_type_get_global_classfuncs (camel_offline_store_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = imap_store_dispose;
+ object_class->finalize = imap_store_finalize;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->setv = imap_setv;
imap_tag_prefix = 'A';
}
-CamelType
-camel_imap_store_get_type (void)
-{
- static CamelType camel_imap_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_store_type == CAMEL_INVALID_TYPE) {
- camel_imap_store_type =
- camel_type_register (camel_offline_store_get_type (),
- "CamelImapStore",
- sizeof (CamelImapStore),
- sizeof (CamelImapStoreClass),
- (CamelObjectClassInitFunc) camel_imap_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_store_init,
- (CamelObjectFinalizeFunc) imap_store_finalize);
- }
-
- return camel_imap_store_type;
-}
-
static gboolean
construct (CamelService *service, CamelSession *session,
CamelProvider *provider, CamelURL *url,
ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Could not connect to %s: %s"),
service->url->host, g_strerror (errno));
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
/* Read the greeting, if any, and deal with PREAUTH */
if (camel_imap_store_readline (store, &buf, ex) < 0) {
if (store->istream) {
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
/* get the imap server capabilities */
if (!imap_get_capability (service, ex)) {
if (store->istream) {
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
response = camel_imap_command (store, NULL, ex, "STARTTLS");
if (!response) {
- camel_object_unref (store->istream);
- camel_object_unref (store->ostream);
+ g_object_unref (store->istream);
+ g_object_unref (store->ostream);
store->istream = store->ostream = NULL;
return FALSE;
}
command, the client MUST discard prior CAPA responses */
if (!imap_get_capability (service, ex)) {
if (store->istream) {
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
}
if (store->istream) {
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
_("Could not connect with command \"%s\": %s"),
full_cmd, g_strerror (errno));
- camel_object_unref (cmd_stream);
+ g_object_unref (cmd_stream);
g_free (full_cmd);
return FALSE;
}
/* Read the greeting, if any, and deal with PREAUTH */
if (camel_imap_store_readline (store, &buf, ex) < 0) {
if (store->istream) {
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
/* get the imap server capabilities */
if (!imap_get_capability (service, ex)) {
if (store->istream) {
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
/* NB: we can have vtrash folders also in our store ... bit hacky */
if (!CAMEL_IS_IMAP_FOLDER(folder)) {
- camel_object_unref (folder);
+ g_object_unref (folder);
continue;
}
* after being offline */
namedup = g_strdup (folder->full_name);
- camel_object_unref (folder);
+ g_object_unref (folder);
imap_folder_effectively_unsubscribed (store, namedup, ex);
imap_forget_folder (store, namedup, ex);
g_free (namedup);
} else
- camel_object_unref (folder);
+ g_object_unref (folder);
}
g_ptr_array_free (folders, TRUE);
goto lose;
}
- camel_object_unref (sasl);
+ g_object_unref (sasl);
return TRUE;
_("Bad authentication response from server."));
}
- camel_object_unref (sasl);
+ g_object_unref (sasl);
return FALSE;
}
if (store->istream) {
camel_stream_close(store->istream);
- camel_object_unref (store->istream);
+ g_object_unref (store->istream);
store->istream = NULL;
}
if (store->ostream) {
camel_stream_close(store->ostream);
- camel_object_unref (store->ostream);
+ g_object_unref (store->ostream);
store->ostream = NULL;
}
store->connected = FALSE;
if (store->current_folder) {
- camel_object_unref (store->current_folder);
+ g_object_unref (store->current_folder);
store->current_folder = NULL;
}
folder_name = "INBOX";
if (imap_store->current_folder) {
- camel_object_unref (imap_store->current_folder);
+ g_object_unref (imap_store->current_folder);
imap_store->current_folder = NULL;
}
new_folder = camel_imap_folder_new (store, folder_name, folder_dir, ex);
g_free (folder_dir);
if (new_folder) {
- imap_store->current_folder = camel_object_ref (new_folder);
+ imap_store->current_folder = g_object_ref (new_folder);
if (!camel_imap_folder_selected (new_folder, response, ex)) {
- camel_object_unref (imap_store->current_folder);
+ g_object_unref (imap_store->current_folder);
imap_store->current_folder = NULL;
- camel_object_unref (new_folder);
+ g_object_unref (new_folder);
new_folder = NULL;
}
}
camel_imap_response_free_without_processing (imap_store, response);
if (imap_store->current_folder)
- camel_object_unref (imap_store->current_folder);
+ g_object_unref (imap_store->current_folder);
/* no need to actually create a CamelFolder for INBOX */
imap_store->current_folder = NULL;
camel_imap_response_free_without_processing (imap_store, response);
if (imap_store->current_folder)
- camel_object_unref (imap_store->current_folder);
+ g_object_unref (imap_store->current_folder);
/* no need to actually create a CamelFolder for INBOX */
imap_store->current_folder = NULL;
g_free (folder_dir);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
}
}
fi->total = ((CamelFolderSummary *)ims)->saved_count;
if (!folder->summary)
- camel_object_unref (ims);
- camel_object_unref (folder);
+ g_object_unref (ims);
+ g_object_unref (folder);
}
}
{
struct _refresh_msg *m = (struct _refresh_msg *)msg;
- camel_object_unref (m->store);
+ g_object_unref (m->store);
camel_exception_clear(&m->ex);
}
imap_store->refresh_stamp = now;
m = camel_session_thread_msg_new(((CamelService *)store)->session, &refresh_ops, sizeof(*m));
- m->store = camel_object_ref (store);
+ m->store = g_object_ref (store);
camel_exception_init(&m->ex);
camel_session_thread_queue(((CamelService *)store)->session, &m->msg, 0);
}
G_END_DECLS
-#define CAMEL_IMAP_STORE_TYPE (camel_imap_store_get_type ())
-#define CAMEL_IMAP_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_STORE_TYPE, CamelImapStore))
-#define CAMEL_IMAP_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_STORE_TYPE, CamelImapStoreClass))
-#define CAMEL_IS_IMAP_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_STORE \
+ (camel_imap_store_get_type ())
+#define CAMEL_IMAP_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_STORE, CamelImapStore))
+#define CAMEL_IMAP_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_STORE, CamelImapStoreClass))
+#define CAMEL_IS_IMAP_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_STORE))
+#define CAMEL_IS_IMAP_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_STORE))
+#define CAMEL_IMAP_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_STORE, CamelImapStoreClass))
G_BEGIN_DECLS
CamelOfflineStoreClass parent_class;
};
-/* Standard Camel function */
-CamelType camel_imap_store_get_type (void);
+GType camel_imap_store_get_type (void);
gboolean camel_imap_store_connected (CamelImapStore *store, CamelException *ex);
static gint content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir);
static CamelMessageContentInfo * content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
-static gpointer camel_imap_summary_parent_class;
+G_DEFINE_TYPE (CamelImapSummary, camel_imap_summary, CAMEL_TYPE_FOLDER_SUMMARY)
static CamelMessageInfo *
imap_message_info_clone(CamelFolderSummary *s, const CamelMessageInfo *mi)
{
CamelFolderSummaryClass *folder_summary_class;
- camel_imap_summary_parent_class = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type()));
-
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->message_info_size = sizeof (CamelImapMessageInfo);
folder_summary_class->content_info_size = sizeof (CamelImapMessageContentInfo);
{
}
-CamelType
-camel_imap_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(
- camel_folder_summary_get_type(), "CamelImapSummary",
- sizeof (CamelImapSummary),
- sizeof (CamelImapSummaryClass),
- (CamelObjectClassInitFunc) camel_imap_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_summary_init,
- NULL);
- }
-
- return type;
-}
-
static gint
sort_uid_cmp (gpointer enc, gint len1, gpointer data1, gint len2, gpointer data2)
{
CamelException ex;
camel_exception_init (&ex);
- summary = CAMEL_FOLDER_SUMMARY (camel_object_new (camel_imap_summary_get_type ()));
+ summary = g_object_new (CAMEL_TYPE_IMAP_SUMMARY, NULL);
summary->folder = folder;
/* Don't do DB sort. Its pretty slow to load */
if (folder && 0) {
#include <camel/camel.h>
-#define CAMEL_IMAP_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_imap_summary_get_type (), CamelImapSummary)
-#define CAMEL_IMAP_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imap_summary_get_type (), CamelImapSummaryClass)
-#define CAMEL_IS_IMAP_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_imap_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_SUMMARY \
+ (camel_imap_summary_get_type ())
+#define CAMEL_IMAP_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_SUMMARY, CamelImapSummary))
+#define CAMEL_IMAP_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_SUMMARY, CamelImapSummaryClass))
+#define CAMEL_IS_IMAP_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_SUMMARY))
+#define CAMEL_IS_IMAP_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_SUMMARY))
+#define CAMEL_IMAP_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_SUMMARY, CamelImapSummaryClass))
#define CAMEL_IMAP_SERVER_FLAGS (CAMEL_MESSAGE_ANSWERED | \
CAMEL_MESSAGE_DELETED | \
};
-CamelType camel_imap_summary_get_type (void);
+GType camel_imap_summary_get_type (void);
CamelFolderSummary *camel_imap_summary_new (struct _CamelFolder *folder, const gchar *filename);
void camel_imap_summary_add_offline (CamelFolderSummary *summary,
#include "camel-imap-folder.h"
#include "camel-imap-wrapper.h"
+#define CAMEL_IMAP_WRAPPER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_IMAP_WRAPPER, CamelImapWrapperPrivate))
+
struct _CamelImapWrapperPrivate {
GMutex *lock;
};
#define CAMEL_IMAP_WRAPPER_LOCK(f, l) (g_mutex_lock(((CamelImapWrapper *)f)->priv->l))
#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l) (g_mutex_unlock(((CamelImapWrapper *)f)->priv->l))
-static gpointer camel_imap_wrapper_parent_class;
+G_DEFINE_TYPE (CamelImapWrapper, camel_imap_wrapper, CAMEL_TYPE_DATA_WRAPPER)
static void
imap_wrapper_hydrate (CamelImapWrapper *imap_wrapper,
{
CamelDataWrapper *data_wrapper = (CamelDataWrapper *) imap_wrapper;
- data_wrapper->stream = camel_object_ref (stream);
+ data_wrapper->stream = g_object_ref (stream);
data_wrapper->offline = FALSE;
- camel_object_unref (imap_wrapper->folder);
+ g_object_unref (imap_wrapper->folder);
imap_wrapper->folder = NULL;
g_free (imap_wrapper->uid);
imap_wrapper->uid = NULL;
g_free (imap_wrapper->part_spec);
- imap_wrapper->part = NULL;
+ imap_wrapper->part_spec = NULL;
}
static void
-imap_wrapper_finalize (CamelObject *object)
+imap_wrapper_dispose (GObject *object)
{
CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (object);
- if (imap_wrapper->folder)
- camel_object_unref (CAMEL_OBJECT (imap_wrapper->folder));
- if (imap_wrapper->uid)
- g_free (imap_wrapper->uid);
- if (imap_wrapper->part)
- g_free (imap_wrapper->part_spec);
+ if (imap_wrapper->folder != NULL) {
+ g_object_unref (imap_wrapper->folder);
+ imap_wrapper->folder = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_imap_wrapper_parent_class)->dispose (object);
+}
+
+static void
+imap_wrapper_finalize (GObject *object)
+{
+ CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (object);
+
+ g_free (imap_wrapper->uid);
+ g_free (imap_wrapper->part_spec);
g_mutex_free (imap_wrapper->priv->lock);
- g_free (imap_wrapper->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imap_wrapper_parent_class)->finalize (object);
}
static gssize
}
imap_wrapper_hydrate (imap_wrapper, datastream);
- camel_object_unref (datastream);
+ g_object_unref (datastream);
}
CAMEL_IMAP_WRAPPER_UNLOCK (imap_wrapper, lock);
static void
camel_imap_wrapper_class_init (CamelImapWrapperClass *class)
{
+ GObjectClass *object_class;
CamelDataWrapperClass *data_wrapper_class;
- camel_imap_wrapper_parent_class = CAMEL_DATA_WRAPPER_CLASS (camel_type_get_global_classfuncs (camel_data_wrapper_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelImapWrapperPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = imap_wrapper_dispose;
+ object_class->finalize = imap_wrapper_finalize;
data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (class);
data_wrapper_class->write_to_stream = imap_wrapper_write_to_stream;
static void
camel_imap_wrapper_init (CamelImapWrapper *imap_wrapper)
{
- imap_wrapper->priv = g_new0 (CamelImapWrapperPrivate, 1);
+ imap_wrapper->priv = CAMEL_IMAP_WRAPPER_GET_PRIVATE (imap_wrapper);
imap_wrapper->priv->lock = g_mutex_new ();
}
-CamelType
-camel_imap_wrapper_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- CAMEL_DATA_WRAPPER_TYPE,
- "CamelImapWrapper",
- sizeof (CamelImapWrapper),
- sizeof (CamelImapWrapperClass),
- (CamelObjectClassInitFunc) camel_imap_wrapper_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_wrapper_init,
- (CamelObjectFinalizeFunc) imap_wrapper_finalize);
- }
-
- return type;
-}
-
CamelDataWrapper *
camel_imap_wrapper_new (CamelImapFolder *imap_folder,
CamelContentType *type, CamelTransferEncoding encoding,
sync_offline = (camel_url_get_param (((CamelService *) store)->url, "sync_offline") != NULL ||
((CamelOfflineFolder *)imap_folder)->sync_offline);
- imap_wrapper = (CamelImapWrapper *)camel_object_new (camel_imap_wrapper_get_type());
+ imap_wrapper = g_object_new (CAMEL_TYPE_IMAP_WRAPPER, NULL);
camel_data_wrapper_set_mime_type_field (CAMEL_DATA_WRAPPER (imap_wrapper), type);
((CamelDataWrapper *)imap_wrapper)->offline = !sync_offline;
((CamelDataWrapper *)imap_wrapper)->encoding = encoding;
- imap_wrapper->folder = camel_object_ref (imap_folder);
+ imap_wrapper->folder = g_object_ref (imap_folder);
imap_wrapper->uid = g_strdup (uid);
imap_wrapper->part_spec = g_strdup (part_spec);
if (stream) {
imap_wrapper_hydrate (imap_wrapper, stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
}
return (CamelDataWrapper *)imap_wrapper;
#include <camel/camel.h>
-#define CAMEL_IMAP_WRAPPER_TYPE (camel_imap_wrapper_get_type ())
-#define CAMEL_IMAP_WRAPPER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_WRAPPER_TYPE, CamelImapWrapper))
-#define CAMEL_IMAP_WRAPPER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_WRAPPER_TYPE, CamelImapWrapperClass))
-#define CAMEL_IS_IMAP_WRAPPER(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_WRAPPER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAP_WRAPPER \
+ (camel_imap_wrapper_get_type ())
+#define CAMEL_IMAP_WRAPPER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAP_WRAPPER, CamelImapWrapper))
+#define CAMEL_IMAP_WRAPPER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAP_WRAPPER, CamelImapWrapperClass))
+#define CAMEL_IS_IMAP_WRAPPER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAP_WRAPPER))
+#define CAMEL_IS_IMAP_WRAPPER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAP_WRAPPER))
+#define CAMEL_IMAP_WRAPPER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAP_WRAPPER, CamelImapWrapperClass))
G_BEGIN_DECLS
CamelDataWrapperClass parent_class;
};
-CamelType camel_imap_wrapper_get_type (void);
+GType camel_imap_wrapper_get_type (void);
/* Constructor */
CamelDataWrapper *camel_imap_wrapper_new (CamelImapFolder *imap_folder,
#define d(x)
-#define CF_CLASS(o) (CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(o)))
-static CamelObjectClass *parent_class;
-static CamelOfflineFolderClass *offline_folder_class = NULL;
+G_DEFINE_TYPE (CamelIMAPXFolder, camel_imapx_folder, CAMEL_TYPE_FOLDER)
CamelFolder *
camel_imapx_folder_new(CamelStore *store, const gchar *folder_dir, const gchar *folder_name, CamelException *ex)
else
short_name = folder_name;
- folder = CAMEL_FOLDER (camel_object_new (CAMEL_IMAPX_FOLDER_TYPE));
+ folder = g_object_new (CAMEL_TYPE_IMAPX_FOLDER, NULL);
camel_folder_construct(folder, store, folder_name, short_name);
ifolder = (CamelIMAPXFolder *) folder;
return folder;
}
+static void
+imapx_folder_dispose (GObject *object)
+{
+ CamelIMAPXFolder *folder = CAMEL_IMAPX_FOLDER (object);
+
+ if (folder->cache != NULL) {
+ g_object_unref (folder->cache);
+ folder->cache = NULL;
+ }
+
+ if (folder->search != NULL) {
+ g_object_unref (folder->search);
+ folder->search = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_imapx_folder_parent_class)->dispose (object);
+}
+
+static void
+imapx_folder_finalize (GObject *object)
+{
+ CamelIMAPXFolder *folder = CAMEL_IMAPX_FOLDER (object);
+
+ if (folder->ignore_recent != NULL)
+ g_hash_table_unref (folder->ignore_recent);
+
+ g_mutex_free (folder->search_lock);
+ g_mutex_free (folder->stream_lock);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imapx_folder_parent_class)->finalize (object);
+}
+
static gboolean
imapx_refresh_info (CamelFolder *folder, CamelException *ex)
{
g_mutex_lock (ifolder->stream_lock);
if (camel_data_wrapper_construct_from_stream((CamelDataWrapper *)msg, stream) == -1) {
- camel_object_unref (msg);
+ g_object_unref (msg);
msg = NULL;
}
g_mutex_unlock (ifolder->stream_lock);
- camel_object_unref (stream);
+ g_object_unref (stream);
}
return msg;
}
static void
-imapx_folder_class_init (CamelIMAPXFolderClass *klass)
+camel_imapx_folder_class_init (CamelIMAPXFolderClass *class)
{
- offline_folder_class = CAMEL_OFFLINE_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_offline_folder_get_type ()));
-
- ((CamelFolderClass *)klass)->refresh_info = imapx_refresh_info;
- ((CamelFolderClass *)klass)->sync = imapx_sync;
- ((CamelFolderClass *)klass)->search_by_expression = imapx_search_by_expression;
- ((CamelFolderClass *)klass)->search_by_uids = imapx_search_by_uids;
- ((CamelFolderClass *)klass)->count_by_expression = imapx_count_by_expression;
- ((CamelFolderClass *)klass)->search_free = imapx_search_free;
-
- ((CamelFolderClass *)klass)->expunge = imapx_expunge;
- ((CamelFolderClass *)klass)->get_message = imapx_get_message;
- ((CamelFolderClass *)klass)->sync_message = imapx_sync_message;
- ((CamelFolderClass *)klass)->append_message = imapx_append_message;
- ((CamelFolderClass *)klass)->transfer_messages_to = imapx_transfer_messages_to;
- ((CamelFolderClass *)klass)->get_filename = imapx_get_filename;
+ GObjectClass *object_class;
+ CamelFolderClass *folder_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = imapx_folder_dispose;
+ object_class->finalize = imapx_folder_finalize;
+
+ folder_class = CAMEL_FOLDER_CLASS (class);
+ folder_class->refresh_info = imapx_refresh_info;
+ folder_class->sync = imapx_sync;
+ folder_class->search_by_expression = imapx_search_by_expression;
+ folder_class->search_by_uids = imapx_search_by_uids;
+ folder_class->count_by_expression = imapx_count_by_expression;
+ folder_class->search_free = imapx_search_free;
+ folder_class->expunge = imapx_expunge;
+ folder_class->get_message = imapx_get_message;
+ folder_class->sync_message = imapx_sync_message;
+ folder_class->append_message = imapx_append_message;
+ folder_class->transfer_messages_to = imapx_transfer_messages_to;
+ folder_class->get_filename = imapx_get_filename;
}
static void
-imapx_folder_init(CamelObject *o, CamelObjectClass *klass)
+camel_imapx_folder_init (CamelIMAPXFolder *imapx_folder)
{
- CamelFolder *folder = (CamelFolder *)o;
+ CamelFolder *folder = CAMEL_FOLDER (imapx_folder);
folder->folder_flags |= (CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY |
CAMEL_FOLDER_HAS_SEARCH_CAPABILITY);
camel_folder_set_lock_async (folder, TRUE);
}
-static void
-imapx_finalize (CamelObject *object)
-{
- CamelIMAPXFolder *ifolder = (CamelIMAPXFolder *) object;
-
- camel_object_unref (CAMEL_OBJECT (ifolder->cache));
-
- if (ifolder->ignore_recent)
- g_hash_table_unref (ifolder->ignore_recent);
-
- g_mutex_free (ifolder->search_lock);
- g_mutex_free (ifolder->stream_lock);
- if (ifolder->search)
- camel_object_unref (CAMEL_OBJECT (ifolder->search));
-}
-
-CamelType
-camel_imapx_folder_get_type (void)
-{
- static CamelType camel_imapx_folder_type = CAMEL_INVALID_TYPE;
-
- if (!camel_imapx_folder_type) {
- parent_class = camel_offline_folder_get_type();
- camel_imapx_folder_type = camel_type_register (parent_class, "CamelIMAPXFolder",
- sizeof (CamelIMAPXFolder),
- sizeof (CamelIMAPXFolderClass),
- (CamelObjectClassInitFunc)imapx_folder_class_init,
- NULL,
- imapx_folder_init,
- (CamelObjectFinalizeFunc) imapx_finalize);
- }
-
- return camel_imapx_folder_type;
-}
#ifndef CAMEL_IMAPX_FOLDER_H
#define CAMEL_IMAPX_FOLDER_H
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
#include <camel/camel.h>
-#define CAMEL_IMAPX_FOLDER_TYPE (camel_imapx_folder_get_type ())
-#define CAMEL_IMAPX_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAPX_FOLDER_TYPE, CamelIMAPXFolder))
-#define CAMEL_IMAPX_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAPX_FOLDER_TYPE, CamelIMAPXFolderClass))
-#define CAMEL_IS_IMAPX_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAPX_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_FOLDER \
+ (camel_imapx_folder_get_type ())
+#define CAMEL_IMAPX_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_FOLDER, CamelIMAPXFolder))
+#define CAMEL_IMAPX_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_FOLDER, CamelIMAPXFolderClass))
+#define CAMEL_IS_IMAPX_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_FOLDER))
+#define CAMEL_IS_IMAPX_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_FOLDER))
+#define CAMEL_IMAPX_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_FOLDER, CamelIMAPXFolderClass))
+
+G_BEGIN_DECLS
-typedef struct _CamelIMAPXFolder {
+typedef struct _CamelIMAPXFolder CamelIMAPXFolder;
+typedef struct _CamelIMAPXFolderClass CamelIMAPXFolderClass;
+
+struct _CamelIMAPXFolder {
CamelOfflineFolder parent;
gchar *raw_name;
GMutex *search_lock;
GMutex *stream_lock;
-} CamelIMAPXFolder;
+};
-typedef struct _CamelIMAPXFolderClass {
+struct _CamelIMAPXFolderClass {
CamelOfflineFolderClass parent_class;
-} CamelIMAPXFolderClass;
-
-/* Standard Camel function */
-CamelType camel_imapx_folder_get_type (void);
+};
-/* public methods */
-CamelFolder *camel_imapx_folder_new(CamelStore *parent, const gchar *path, const gchar *raw, CamelException *ex);
-gchar * imapx_get_filename (CamelFolder *folder, const gchar *uid, CamelException *ex);
+GType camel_imapx_folder_get_type (void);
+CamelFolder * camel_imapx_folder_new (CamelStore *parent,
+ const gchar *path,
+ const gchar *raw,
+ CamelException *ex);
+gchar * imapx_get_filename (CamelFolder *folder,
+ const gchar *uid,
+ CamelException *ex);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
#endif /* CAMEL_IMAPX_FOLDER_H */
guint32 last;
};
-struct _CamelIMAPXCommand;
void imapx_uidset_init(struct _uidset_state *ss, gint total, gint limit);
gint imapx_uidset_done(struct _uidset_state *ss, struct _CamelIMAPXCommand *ic);
gint imapx_uidset_add(struct _uidset_state *ss, struct _CamelIMAPXCommand *ic, const gchar *uid);
static gint imapx_uid_cmp(gconstpointer ap, gconstpointer bp, gpointer data);
typedef struct _CamelIMAPXCommandPart CamelIMAPXCommandPart;
-typedef struct _CamelIMAPXCommand CamelIMAPXCommand;
typedef enum {
CAMEL_IMAPX_COMMAND_SIMPLE = 0,
static gint imapx_uids_array_cmp (gconstpointer ap, gconstpointer bp);
static void imapx_server_sync_changes(CamelIMAPXServer *is, CamelFolder *folder, gint pri, CamelException *ex);
-typedef struct _CamelIMAPXIdle CamelIMAPXIdle;
struct _CamelIMAPXIdle {
GMutex *idle_lock;
EFlag *idle_start_watch;
static void imapx_select(CamelIMAPXServer *is, CamelFolder *folder, gboolean force, CamelException *ex);
+G_DEFINE_TYPE (CamelIMAPXServer, camel_imapx_server, CAMEL_TYPE_OBJECT)
+
/*
this creates a uid (or sequence number) set directly into a command,
if total is set, then we break it up into total uids. (i.e. command time)
camel_stream_reset((CamelStream *)ob);
}
type |= CAMEL_IMAPX_COMMAND_CONTINUATION;
- camel_object_ref (ob);
+ g_object_ref (ob);
ob_size = null->written;
- camel_object_unref (null);
+ g_object_unref (null);
camel_stream_printf((CamelStream *)ic->mem, "{%u}", ob_size);
break;
}
CamelObject *ob = o;
/* we presume we'll need to get additional data only if we're not authenticated yet */
- camel_object_ref (ob);
+ g_object_ref (ob);
camel_stream_printf((CamelStream *)ic->mem, "%s", camel_sasl_get_mechanism (CAMEL_SASL (ob)));
if (!camel_sasl_get_authenticated((CamelSasl *)ob))
type |= CAMEL_IMAPX_COMMAND_CONTINUATION;
return;
if (ic->mem)
- camel_object_unref (ic->mem);
+ g_object_unref (ic->mem);
imapx_free_status(ic->status);
g_free(ic->select);
g_free(cp->ob);
break;
default:
- camel_object_unref (cp->ob);
+ g_object_unref (cp->ob);
}
}
g_free(cp);
if (byte_array->len > 0)
imapx_command_add_part(ic, CAMEL_IMAPX_COMMAND_SIMPLE, NULL);
- camel_object_unref (ic->mem);
+ g_object_unref (ic->mem);
ic->mem = NULL;
}
}
gboolean changed = FALSE;
gchar *uid = NULL;
- camel_object_ref (imap->select_folder);
+ g_object_ref (imap->select_folder);
folder = imap->select_folder;
c(printf("flag changed: %d\n", id));
if (mi)
camel_message_info_free (mi);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
}
mp = camel_mime_parser_new();
camel_mime_parser_init_with_stream(mp, finfo->header);
mi = camel_folder_summary_info_new_from_parser(job->folder->summary, mp);
- camel_object_unref (mp);
+ g_object_unref (mp);
if (mi) {
guint32 server_flags;
// FIXME: errors
if (cp->ob && (file = camel_stream_fs_new_with_name(cp->ob, O_RDONLY, 0))) {
camel_stream_write_to_stream(file, (CamelStream *)imap->stream);
- camel_object_unref (file);
+ g_object_unref (file);
} else if (cp->ob_size > 0) {
// Server is expecting data ... ummm, send it zeros? abort?
}
}
if (is->select_pending)
- camel_object_unref (is->select_pending);
+ g_object_unref (is->select_pending);
} else {
CamelIMAPXFolder *ifolder = (CamelIMAPXFolder *) is->select_pending;
c(printf("Select ok!\n"));
return;
is->select_pending = folder;
- camel_object_ref (folder);
+ g_object_ref (folder);
if (is->select_folder) {
g_free(is->select);
- camel_object_unref (is->select_folder);
+ g_object_unref (is->select_folder);
is->select = NULL;
is->select_folder = NULL;
}
if (ex && ex->id) {
e(printf ("Unable to connect %d %s \n", ex->id, ex->desc));
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Could not connect to %s (port %s): %s"),
is->url->host, serv, g_strerror(errno));
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
is->stream = (CamelIMAPXStream *) camel_imapx_stream_new(tcp_stream);
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
/* Disable Nagle - we send a lot of small requests which nagle slows down */
sockopt.option = CAMEL_SOCKOPT_NODELAY;
exit:
if (camel_exception_is_set (ex)) {
e(printf("Unable to connect %d %s \n", ex->id, ex->desc));
- camel_object_unref (is->stream);
+ g_object_unref (is->stream);
is->stream = NULL;
if (is->cinfo) {
if (service->url->authmech
&& (sasl = camel_sasl_new("imap", service->url->authmech, NULL))) {
ic = camel_imapx_command_new("AUTHENTICATE", NULL, "AUTHENTICATE %A", sasl);
- camel_object_unref (sasl);
+ g_object_unref (sasl);
} else {
ic = camel_imapx_command_new("LOGIN", NULL, "LOGIN %s %s", service->url->user, service->url->passwd);
}
camel_exception_setv(job->ex, 1, "Error fetching message: %s", ic->status->text);
else
camel_exception_xfer (job->ex, ic->ex);
- camel_object_unref (stream);
+ g_object_unref (stream);
job->u.get_message.stream = NULL;
} else {
CamelIMAPXFolder *ifolder = (CamelIMAPXFolder *) job->folder;
}
cleanup:
- camel_object_unref (job->u.copy_messages.dest);
- camel_object_unref (job->folder);
+ g_object_unref (job->u.copy_messages.dest);
+ g_object_unref (job->folder);
imapx_job_done (is, job);
camel_imapx_command_free (ic);
g_free (old_uid);
camel_message_info_free(job->u.append_message.info);
g_free(job->u.append_message.path);
- camel_object_unref (job->folder);
+ g_object_unref (job->folder);
imapx_job_done (is, job);
camel_imapx_command_free (ic);
}
static void
-imapx_server_class_init(CamelIMAPXServerClass *ieclass)
+imapx_server_finalize (GObject *object)
+{
+ CamelIMAPXServer *is = CAMEL_IMAPX_SERVER (object);
+
+ g_static_rec_mutex_free(&is->queue_lock);
+ g_static_rec_mutex_free (&is->ostream_lock);
+ g_hash_table_destroy (is->uid_eflags);
+
+ camel_folder_change_info_free (is->changes);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imapx_server_parent_class)->finalize (object);
+}
+
+static void
+imapx_server_constructed (GObject *object)
+{
+ CamelIMAPXServer *server;
+ CamelIMAPXServerClass *class;
+
+ server = CAMEL_IMAPX_SERVER (object);
+ class = CAMEL_IMAPX_SERVER_GET_CLASS (server);
+
+ server->tagprefix = class->tagprefix;
+ class->tagprefix++;
+ if (class->tagprefix > 'Z')
+ class->tagprefix = 'A';
+ server->tagprefix = 'A';
+
+}
+
+static void
+camel_imapx_server_class_init(CamelIMAPXServerClass *class)
{
- ieclass->tagprefix = 'A';
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = imapx_server_finalize;
+ object_class->constructed = imapx_server_constructed;
+
+ class->tagprefix = 'A';
-// camel_object_class_add_event((CamelObjectClass *)ieclass, "status", NULL);
+// camel_object_class_add_event((CamelObjectClass *)class, "status", NULL);
}
static void
-imapx_server_init(CamelIMAPXServer *is, CamelIMAPXServerClass *isclass)
+camel_imapx_server_init (CamelIMAPXServer *is)
{
camel_dlist_init(&is->queue);
camel_dlist_init(&is->active);
g_static_rec_mutex_init (&is->queue_lock);
g_static_rec_mutex_init (&is->ostream_lock);
- is->tagprefix = isclass->tagprefix;
- isclass->tagprefix++;
- if (isclass->tagprefix > 'Z')
- isclass->tagprefix = 'A';
- is->tagprefix = 'A';
-
is->state = IMAPX_DISCONNECTED;
is->expunged = NULL;
is->uid_eflags = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify) e_flag_free);
}
-static void
-imapx_server_finalize(CamelIMAPXServer *is, CamelIMAPXServerClass *isclass)
-{
- g_static_rec_mutex_free(&is->queue_lock);
- g_static_rec_mutex_free (&is->ostream_lock);
- g_hash_table_destroy (is->uid_eflags);
-
- camel_folder_change_info_free (is->changes);
-}
-
-CamelType
-camel_imapx_server_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_object_get_type (),
- "CamelIMAPXServer",
- sizeof (CamelIMAPXServer),
- sizeof (CamelIMAPXServerClass),
- (CamelObjectClassInitFunc) imapx_server_class_init,
- NULL,
- (CamelObjectInitFunc) imapx_server_init,
- (CamelObjectFinalizeFunc) imapx_server_finalize);
- }
-
- return type;
-}
-
CamelIMAPXServer *
camel_imapx_server_new(CamelStore *store, CamelURL *url)
{
- CamelIMAPXServer *is = (CamelIMAPXServer *)camel_object_new(camel_imapx_server_get_type());
+ CamelIMAPXServer *is;
- is->session = ((CamelService *)store)->session;
- camel_object_ref (is->session);
+ is = g_object_new (CAMEL_TYPE_IMAPX_SERVER, NULL);
+ is->session = g_object_ref (CAMEL_SERVICE (store)->session);
is->store = store;
is->url = camel_url_copy(url);
if (camel_stream_close (is->stream->source) == -1)
ret = FALSE;
- camel_object_unref (CAMEL_OBJECT (is->stream));
+ g_object_unref (CAMEL_OBJECT (is->stream));
is->stream = NULL;
}
/* TODO need a select lock */
if (is->select_folder) {
- camel_object_unref (is->select_folder);
+ g_object_unref (is->select_folder);
is->select_folder = NULL;
}
}
if (is->select_pending) {
- camel_object_unref (is->select_pending);
+ g_object_unref (is->select_pending);
is->select_pending = NULL;
}
stream = imapx_server_get_message (is, folder, NULL, uid, IMAPX_PRIORITY_SYNC_MESSAGE, ex);
if (stream)
- camel_object_unref (stream);
+ g_object_unref (stream);
}
void
job->u.copy_messages.delete_originals = delete_originals;
job->ex = ex;
- camel_object_ref (source);
- camel_object_ref (dest);
+ g_object_ref (source);
+ g_object_ref (dest);
if (imapx_register_job (is, job))
imapx_run_job (is, job);
}
filter = camel_stream_filter_new (stream);
- camel_object_unref (stream);
+ g_object_unref (stream);
canon = camel_mime_filter_canon_new(CAMEL_MIME_FILTER_CANON_CRLF);
camel_stream_filter_add((CamelStreamFilter *)filter, canon);
res = camel_data_wrapper_write_to_stream((CamelDataWrapper *)message, filter);
- camel_object_unref (canon);
- camel_object_unref (filter);
+ g_object_unref (canon);
+ g_object_unref (filter);
if (res == -1) {
camel_exception_setv(ex, 2, "Cannot create spool file: %s", g_strerror(errno));
job->noreply = 1;
job->start = imapx_job_append_message_start;
job->folder = folder;
- camel_object_ref (folder);
+ g_object_ref (folder);
job->u.append_message.info = info;
job->u.append_message.path = tmp;
#include <camel/camel.h>
#include <libedataserver/e-flag.h>
-struct _CamelFolder;
-struct _CamelException;
-struct _CamelMimeMessage;
-struct _CamelMessageInfo;
+#include "camel-imapx-stream.h"
+#include "camel-imapx-store-summary.h"
+
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_SERVER \
+ (camel_imapx_server_get_type ())
+#define CAMEL_IMAPX_SERVER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_SERVER, CamelIMAPXServer))
+#define CAMEL_IMAPX_SERVER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_SERVER, CamelIMAPXServerClass))
+#define CAMEL_IS_IMAPX_SERVER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_SERVER))
+#define CAMEL_IS_IMAPX_SERVER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_SERVER))
+#define CAMEL_IMAPX_SERVER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_SERVER, CamelIMAPXServerClass))
-#define CAMEL_IMAPX_SERVER(obj) CAMEL_CHECK_CAST (obj, camel_imapx_server_get_type (), CamelIMAPPServer)
-#define CAMEL_IMAPX_SERVER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imapx_server_get_type (), CamelIMAPPServerClass)
-#define CAMEL_IS_IMAPX_SERVER(obj) CAMEL_CHECK_TYPE (obj, camel_imapx_server_get_type ())
+#define IMAPX_MODE_READ (1<<0)
+#define IMAPX_MODE_WRITE (1<<1)
+
+G_BEGIN_DECLS
typedef struct _CamelIMAPXServer CamelIMAPXServer;
typedef struct _CamelIMAPXServerClass CamelIMAPXServerClass;
-#define IMAPX_MODE_READ (1<<0)
-#define IMAPX_MODE_WRITE (1<<1)
+typedef struct _CamelIMAPXCommand CamelIMAPXCommand;
+typedef struct _CamelIMAPXIdle CamelIMAPXIdle;
struct _CamelIMAPXServer {
- CamelObject cobject;
+ CamelObject parent;
- struct _CamelStore *store;
- struct _CamelSession *session;
+ CamelStore *store;
+ CamelSession *session;
/* Info about the current connection */
- struct _CamelURL *url;
- struct _CamelIMAPXStream *stream;
+ CamelURL *url;
+ CamelIMAPXStream *stream;
struct _capability_info *cinfo;
gboolean is_ssl_stream;
/* Current command/work queue. All commands are stored in one list,
all the time, so they can be cleaned up in exception cases */
GStaticRecMutex queue_lock;
- struct _CamelIMAPXCommand *literal;
+ CamelIMAPXCommand *literal;
CamelDList queue;
CamelDList active;
CamelDList done;
/* info on currently selected folder */
- struct _CamelFolder *select_folder;
+ CamelFolder *select_folder;
gchar *select;
- struct _CamelFolderChangeInfo *changes;
- struct _CamelFolder *select_pending;
+ CamelFolderChangeInfo *changes;
+ CamelFolder *select_pending;
guint32 permanentflags;
guint32 uidvalidity;
guint32 unseen;
gboolean parser_quit;
/* Idle */
- struct _CamelIMAPXIdle *idle;
+ CamelIMAPXIdle *idle;
gboolean use_idle;
/* used for storing eflags to syncronize duplicate get_message requests */
};
struct _CamelIMAPXServerClass {
- CamelObjectClass cclass;
+ CamelObjectClass parent_class;
gchar tagprefix;
};
-CamelType camel_imapx_server_get_type (void);
-CamelIMAPXServer *camel_imapx_server_new(struct _CamelStore *store, struct _CamelURL *url);
-
-gboolean camel_imapx_server_connect(CamelIMAPXServer *is, gint state, CamelException *ex);
-gboolean imapx_connect_to_server (CamelIMAPXServer *is, CamelException *ex);
-
-GPtrArray *camel_imapx_server_list(CamelIMAPXServer *is, const gchar *top, guint32 flags, CamelException *ex);
-
-void camel_imapx_server_refresh_info(CamelIMAPXServer *is, CamelFolder *folder, struct _CamelException *ex);
-void camel_imapx_server_sync_changes(CamelIMAPXServer *is, CamelFolder *folder, CamelException *ex);
-void camel_imapx_server_expunge(CamelIMAPXServer *is, CamelFolder *folder, CamelException *ex);
-void camel_imapx_server_noop (CamelIMAPXServer *is, CamelFolder *folder, CamelException *ex);
-
-CamelStream *camel_imapx_server_get_message(CamelIMAPXServer *is, CamelFolder *folder, const gchar *uid, struct _CamelException *ex);
-void camel_imapx_server_copy_message (CamelIMAPXServer *is, CamelFolder *source, CamelFolder *dest, GPtrArray *uids, gboolean delete_originals, CamelException *ex);
-void camel_imapx_server_append_message(CamelIMAPXServer *is, CamelFolder *folder, struct _CamelMimeMessage *message, const struct _CamelMessageInfo *mi, CamelException *ex);
-void camel_imapx_server_sync_message (CamelIMAPXServer *is, CamelFolder *folder, const gchar *uid, CamelException *ex);
-
-void camel_imapx_server_manage_subscription (CamelIMAPXServer *is, const gchar *folder_name, gboolean subscribe, CamelException *ex);
-void camel_imapx_server_create_folder (CamelIMAPXServer *is, const gchar *folder_name, CamelException *ex);
-void camel_imapx_server_delete_folder (CamelIMAPXServer *is, const gchar *folder_name, CamelException *ex);
-void camel_imapx_server_rename_folder (CamelIMAPXServer *is, const gchar *old_name, const gchar *new_name, CamelException *ex);
+GType camel_imapx_server_get_type (void);
+CamelIMAPXServer *
+ camel_imapx_server_new (CamelStore *store,
+ CamelURL *url);
+gboolean camel_imapx_server_connect (CamelIMAPXServer *is,
+ gint state,
+ CamelException *ex);
+gboolean imapx_connect_to_server (CamelIMAPXServer *is,
+ CamelException *ex);
+GPtrArray * camel_imapx_server_list (CamelIMAPXServer *is,
+ const gchar *top,
+ guint32 flags,
+ CamelException *ex);
+void camel_imapx_server_refresh_info (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ CamelException *ex);
+void camel_imapx_server_sync_changes (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ CamelException *ex);
+void camel_imapx_server_expunge (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ CamelException *ex);
+void camel_imapx_server_noop (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ CamelException *ex);
+CamelStream * camel_imapx_server_get_message (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ const gchar *uid,
+ CamelException *ex);
+void camel_imapx_server_copy_message (CamelIMAPXServer *is,
+ CamelFolder *source,
+ CamelFolder *dest,
+ GPtrArray *uids,
+ gboolean delete_originals,
+ CamelException *ex);
+void camel_imapx_server_append_message
+ (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ CamelMimeMessage *message,
+ const CamelMessageInfo *mi,
+ CamelException *ex);
+void camel_imapx_server_sync_message (CamelIMAPXServer *is,
+ CamelFolder *folder,
+ const gchar *uid,
+ CamelException *ex);
+void camel_imapx_server_manage_subscription
+ (CamelIMAPXServer *is,
+ const gchar *folder_name,
+ gboolean subscribe,
+ CamelException *ex);
+void camel_imapx_server_create_folder(CamelIMAPXServer *is,
+ const gchar *folder_name,
+ CamelException *ex);
+void camel_imapx_server_delete_folder(CamelIMAPXServer *is,
+ const gchar *folder_name,
+ CamelException *ex);
+void camel_imapx_server_rename_folder(CamelIMAPXServer *is,
+ const gchar *old_name,
+ const gchar *new_name,
+ CamelException *ex);
+
+G_END_DECLS
#endif /* CAMEL_IMAPX_SERVER_H */
#define CAMEL_IMAPX_STORE_SUMMARY_VERSION (0)
-#define _PRIVATE(o) (((CamelIMAPXStoreSummary *)(o))->priv)
-
static gint summary_header_load(CamelStoreSummary *, FILE *);
static gint summary_header_save(CamelStoreSummary *, FILE *);
static const gchar *store_info_string(CamelStoreSummary *, const CamelStoreInfo *, gint);
static void store_info_set_string(CamelStoreSummary *, CamelStoreInfo *, int, const gchar *);
-static void camel_imapx_store_summary_class_init (CamelIMAPXStoreSummaryClass *klass);
-static void camel_imapx_store_summary_init (CamelIMAPXStoreSummary *obj);
-static void camel_imapx_store_summary_finalize (CamelObject *obj);
-
-static CamelStoreSummaryClass *camel_imapx_store_summary_parent;
+G_DEFINE_TYPE (CamelIMAPXStoreSummary, camel_imapx_store_summary, CAMEL_TYPE_STORE_SUMMARY)
static void
-camel_imapx_store_summary_class_init (CamelIMAPXStoreSummaryClass *klass)
+camel_imapx_store_summary_class_init (CamelIMAPXStoreSummaryClass *class)
{
- CamelStoreSummaryClass *ssklass = (CamelStoreSummaryClass *)klass;
-
- ssklass->summary_header_load = summary_header_load;
- ssklass->summary_header_save = summary_header_save;
-
- /*ssklass->store_info_new = store_info_new;*/
- ssklass->store_info_load = store_info_load;
- ssklass->store_info_save = store_info_save;
- ssklass->store_info_free = store_info_free;
-
- ssklass->store_info_string = store_info_string;
- ssklass->store_info_set_string = store_info_set_string;
+ CamelStoreSummaryClass *store_summary_class;
+
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (class);
+ 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;
+ store_summary_class->store_info_save = store_info_save;
+ store_summary_class->store_info_free = store_info_free;
+ store_summary_class->store_info_string = store_info_string;
+ store_summary_class->store_info_set_string = store_info_set_string;
}
static void
camel_imapx_store_summary_init (CamelIMAPXStoreSummary *s)
{
- /*struct _CamelImapStoreSummaryPrivate *p;
-
- p = _PRIVATE(s) = g_malloc0(sizeof(*p));*/
-
((CamelStoreSummary *)s)->store_info_size = sizeof(CamelIMAPXStoreInfo);
s->version = CAMEL_IMAPX_STORE_SUMMARY_VERSION;
}
-static void
-camel_imapx_store_summary_finalize (CamelObject *obj)
-{
- /*struct _CamelImapStoreSummaryPrivate *p;*/
- /*CamelImapStoreSummary *s = (CamelImapStoreSummary *)obj;*/
-
- /*p = _PRIVATE(obj);
- g_free(p);*/
-}
-
-CamelType
-camel_imapx_store_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- camel_imapx_store_summary_parent = (CamelStoreSummaryClass *)camel_store_summary_get_type();
- type = camel_type_register((CamelType)camel_imapx_store_summary_parent, "CamelIMAPXStoreSummary",
- sizeof (CamelIMAPXStoreSummary),
- sizeof (CamelIMAPXStoreSummaryClass),
- (CamelObjectClassInitFunc) camel_imapx_store_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imapx_store_summary_init,
- (CamelObjectFinalizeFunc) camel_imapx_store_summary_finalize);
- }
-
- return type;
-}
-
/**
* camel_imapx_store_summary_new:
*
CamelIMAPXStoreSummary *
camel_imapx_store_summary_new (void)
{
- CamelIMAPXStoreSummary *new = CAMEL_IMAPX_STORE_SUMMARY ( camel_object_new (camel_imapx_store_summary_get_type ()));
-
- return new;
+ return g_object_new (CAMEL_TYPE_IMAPX_STORE_SUMMARY, NULL);
}
/**
summary_header_load(CamelStoreSummary *s, FILE *in)
{
CamelIMAPXStoreSummary *is = (CamelIMAPXStoreSummary *)s;
+ CamelStoreSummaryClass *store_summary_class;
gint32 version, capabilities;
camel_imapx_namespace_list_clear (is->namespaces);
- if (camel_imapx_store_summary_parent->summary_header_load((CamelStoreSummary *)s, in) == -1
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+ if (store_summary_class->summary_header_load((CamelStoreSummary *)s, in) == -1
|| camel_file_util_decode_fixed_int32(in, &version) == -1)
return -1;
summary_header_save(CamelStoreSummary *s, FILE *out)
{
CamelIMAPXStoreSummary *is = (CamelIMAPXStoreSummary *)s;
+ CamelStoreSummaryClass *store_summary_class;
/* always write as latest version */
- if (camel_imapx_store_summary_parent->summary_header_save((CamelStoreSummary *)s, out) == -1
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+ if (store_summary_class->summary_header_save((CamelStoreSummary *)s, out) == -1
|| camel_file_util_encode_fixed_int32(out, CAMEL_IMAPX_STORE_SUMMARY_VERSION) == -1
|| camel_file_util_encode_fixed_int32(out, is->capabilities) == -1)
return -1;
store_info_load(CamelStoreSummary *s, FILE *in)
{
CamelIMAPXStoreInfo *mi;
+ CamelStoreSummaryClass *store_summary_class;
- mi = (CamelIMAPXStoreInfo *)camel_imapx_store_summary_parent->store_info_load(s, in);
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+ mi = (CamelIMAPXStoreInfo *)store_summary_class->store_info_load(s, in);
if (mi) {
if (camel_file_util_decode_string(in, &mi->full_name) == -1) {
camel_store_summary_info_free(s, (CamelStoreInfo *)mi);
store_info_save(CamelStoreSummary *s, FILE *out, CamelStoreInfo *mi)
{
CamelIMAPXStoreInfo *isi = (CamelIMAPXStoreInfo *)mi;
+ CamelStoreSummaryClass *store_summary_class;
- if (camel_imapx_store_summary_parent->store_info_save(s, out, mi) == -1
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+ if (store_summary_class->store_info_save(s, out, mi) == -1
|| camel_file_util_encode_string(out, isi->full_name) == -1)
return -1;
store_info_free(CamelStoreSummary *s, CamelStoreInfo *mi)
{
CamelIMAPXStoreInfo *isi = (CamelIMAPXStoreInfo *)mi;
+ CamelStoreSummaryClass *store_summary_class;
g_free(isi->full_name);
- camel_imapx_store_summary_parent->store_info_free(s, mi);
+
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+ store_summary_class->store_info_free(s, mi);
}
static const gchar *
store_info_string(CamelStoreSummary *s, const CamelStoreInfo *mi, gint type)
{
CamelIMAPXStoreInfo *isi = (CamelIMAPXStoreInfo *)mi;
+ CamelStoreSummaryClass *store_summary_class;
/* FIXME: Locks? */
g_assert (mi != NULL);
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+
switch (type) {
case CAMEL_IMAPX_STORE_INFO_FULL_NAME:
return isi->full_name;
default:
- return camel_imapx_store_summary_parent->store_info_string(s, mi, type);
+ return store_summary_class->store_info_string(s, mi, type);
}
}
store_info_set_string(CamelStoreSummary *s, CamelStoreInfo *mi, gint type, const gchar *str)
{
CamelIMAPXStoreInfo *isi = (CamelIMAPXStoreInfo *)mi;
+ CamelStoreSummaryClass *store_summary_class;
g_assert(mi != NULL);
+ store_summary_class = CAMEL_STORE_SUMMARY_CLASS (camel_imapx_store_summary_parent_class);
+
switch (type) {
case CAMEL_IMAPX_STORE_INFO_FULL_NAME:
d(printf("Set full name %s -> %s\n", isi->full_name, str));
camel_store_summary_unlock (s, CSS_SUMMARY_LOCK);
break;
default:
- camel_imapx_store_summary_parent->store_info_set_string(s, mi, type, str);
+ store_summary_class->store_info_set_string(s, mi, type, str);
break;
}
}
#include <camel/camel.h>
-#define CAMEL_IMAPX_STORE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_imapx_store_summary_get_type (), CamelIMAPXStoreSummary)
-#define CAMEL_IMAPX_STORE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imapx_store_summary_get_type (), CamelIMAPXStoreSummaryClass)
-#define CAMEL_IS_IMAPX_STORE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_imapx_store_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_STORE_SUMMARY \
+ (camel_imapx_store_summary_get_type ())
+#define CAMEL_IMAPX_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_STORE_SUMMARY, CamelIMAPXStoreSummary)
+#define CAMEL_IMAPX_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_STORE_SUMMARY, CamelIMAPXStoreSummaryClass)
+#define CAMEL_IS_IMAPX_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_STORE_SUMMARY))
+#define CAMEL_IS_IMAPX_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_STORE_SUMMARY))
+#define CAMEL_IMAPX_STORE_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_STORE_SUMMARY, CamelIMAPXStoreSummaryClass))
G_BEGIN_DECLS
-typedef struct _CamelIMAPXStoreSummary CamelIMAPXStoreSummary;
+typedef struct _CamelIMAPXStoreSummary CamelIMAPXStoreSummary;
typedef struct _CamelIMAPXStoreSummaryClass CamelIMAPXStoreSummaryClass;
typedef struct _CamelIMAPXStoreInfo CamelIMAPXStoreInfo;
typedef struct _CamelIMAPXStoreNamespace CamelIMAPXStoreNamespace;
struct _CamelIMAPXStoreNamespace {
- struct _CamelIMAPXStoreNamespace *next;
+ CamelIMAPXStoreNamespace *next;
gchar *path; /* display path */
gchar *full_name; /* real name */
gchar sep; /* directory separator */
} CamelIMAPXNamespaceList;
struct _CamelIMAPXStoreSummary {
- CamelStoreSummary summary;
-
- struct _CamelIMAPXStoreSummaryPrivate *priv;
+ CamelStoreSummary parent;
/* header info */
guint32 version; /* version of base part of file */
};
struct _CamelIMAPXStoreSummaryClass {
- CamelStoreSummaryClass summary_class;
+ CamelStoreSummaryClass parent_class;
};
-CamelType camel_imapx_store_summary_get_type (void);
-CamelIMAPXStoreSummary *camel_imapx_store_summary_new (void);
+GType camel_imapx_store_summary_get_type (void);
+CamelIMAPXStoreSummary *
+ camel_imapx_store_summary_new (void);
/* TODO: this api needs some more work, needs to support lists */
-CamelIMAPXStoreNamespace *camel_imapx_store_summary_namespace_new(CamelIMAPXStoreSummary *s, const gchar *full_name, gchar dir_sep);
-void camel_imapx_store_summary_namespace_set(CamelIMAPXStoreSummary *s, CamelIMAPXStoreNamespace *ns);
-CamelIMAPXStoreNamespace *camel_imapx_store_summary_namespace_find_path(CamelIMAPXStoreSummary *s, const gchar *path);
-CamelIMAPXStoreNamespace *camel_imapx_store_summary_namespace_find_full(CamelIMAPXStoreSummary *s, const gchar *full_name);
+CamelIMAPXStoreNamespace *
+ camel_imapx_store_summary_namespace_new
+ (CamelIMAPXStoreSummary *s,
+ const gchar *full_name,
+ gchar dir_sep);
+void camel_imapx_store_summary_namespace_set
+ (CamelIMAPXStoreSummary *s,
+ CamelIMAPXStoreNamespace *ns);
+CamelIMAPXStoreNamespace *
+ camel_imapx_store_summary_namespace_find_path
+ (CamelIMAPXStoreSummary *s,
+ const gchar *path);
+CamelIMAPXStoreNamespace *
+ camel_imapx_store_summary_namespace_find_full
+ (CamelIMAPXStoreSummary *s,
+ const gchar *full_name);
/* converts to/from utf8 canonical nasmes */
-gchar *camel_imapx_store_summary_full_to_path(CamelIMAPXStoreSummary *s, const gchar *full_name, gchar dir_sep);
-gchar *camel_imapx_store_summary_path_to_full(CamelIMAPXStoreSummary *s, const gchar *path, gchar dir_sep);
-
-CamelIMAPXStoreInfo *camel_imapx_store_summary_full_name(CamelIMAPXStoreSummary *s, const gchar *full_name);
-CamelIMAPXStoreInfo *camel_imapx_store_summary_add_from_full(CamelIMAPXStoreSummary *s, const gchar *full_name, gchar dir_sep);
+gchar * camel_imapx_store_summary_full_to_path
+ (CamelIMAPXStoreSummary *s,
+ const gchar *full_name,
+ gchar dir_sep);
+gchar * camel_imapx_store_summary_path_to_full
+ (CamelIMAPXStoreSummary *s,
+ const gchar *path,
+ gchar dir_sep);
+
+CamelIMAPXStoreInfo *
+ camel_imapx_store_summary_full_name
+ (CamelIMAPXStoreSummary *s,
+ const gchar *full_name);
+CamelIMAPXStoreInfo *
+ camel_imapx_store_summary_add_from_full
+ (CamelIMAPXStoreSummary *s,
+ const gchar *full_name,
+ gchar dir_sep);
/* a convenience lookup function. always use this if path known */
-gchar *camel_imapx_store_summary_full_from_path(CamelIMAPXStoreSummary *s, const gchar *path);
+gchar * camel_imapx_store_summary_full_from_path
+ (CamelIMAPXStoreSummary *s,
+ const gchar *path);
-void camel_imapx_store_summary_set_namespaces (CamelIMAPXStoreSummary *summary, const CamelIMAPXNamespaceList *nsl);
+void camel_imapx_store_summary_set_namespaces
+ (CamelIMAPXStoreSummary *summary,
+ const CamelIMAPXNamespaceList *nsl);
/* helpe macro's */
-#define camel_imapx_store_info_full_name(s, i) (camel_store_info_string((CamelStoreSummary *)s, (const CamelStoreInfo *)i, CAMEL_IMAPX_STORE_INFO_FULL_NAME))
+#define camel_imapx_store_info_full_name(s, i) \
+ (camel_store_info_string ( \
+ (CamelStoreSummary *)s, (const CamelStoreInfo *)i, \
+ CAMEL_IMAPX_STORE_INFO_FULL_NAME))
G_END_DECLS
#define FINFO_REFRESH_INTERVAL 60
-static CamelOfflineStoreClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelIMAPXStore, camel_imapx_store, CAMEL_TYPE_STORE)
static guint
imapx_name_hash(gconstpointer key)
istore->rec_options |= IMAPX_USE_IDLE;
}
+static void
+imapx_store_finalize (GObject *object)
+{
+ CamelIMAPXStore *imapx_store = CAMEL_IMAPX_STORE (object);
+
+ /* force disconnect so we dont have it run later, after we've cleaned up some stuff */
+ /* SIGH */
+
+ camel_service_disconnect((CamelService *)imapx_store, TRUE, NULL);
+ g_mutex_free (imapx_store->get_finfo_lock);
+
+ g_free (imapx_store->base_url);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imapx_store_parent_class)->finalize (object);
+}
+
static gboolean
imapx_construct(CamelService *service, CamelSession *session, CamelProvider *provider, CamelURL *url, CamelException *ex)
{
gchar *summary;
CamelIMAPXStore *store = (CamelIMAPXStore *)service;
+ CamelServiceClass *service_class;
- if (!CAMEL_SERVICE_CLASS (parent_class)->construct (service, session, provider, url, ex))
+ service_class = CAMEL_SERVICE_CLASS (camel_imapx_store_parent_class);
+ if (!service_class->construct (service, session, provider, url, ex))
return FALSE;
store->base_url = camel_url_to_string (service->url, (CAMEL_URL_HIDE_PASSWORD |
imapx_disconnect (CamelService *service, gboolean clean, CamelException *ex)
{
CamelIMAPXStore *istore = CAMEL_IMAPX_STORE (service);
+ CamelServiceClass *service_class;
- CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, clean, ex);
+ service_class = CAMEL_SERVICE_CLASS (camel_imapx_store_parent_class);
+ service_class->disconnect (service, clean, ex);
if (istore->server)
camel_imapx_server_connect(istore->server, FALSE, ex);
static CamelFolder *
imapx_get_junk(CamelStore *store, CamelException *ex)
{
- CamelFolder *folder = CAMEL_STORE_CLASS(parent_class)->get_junk(store, ex);
+ CamelFolder *folder;
+ CamelStoreClass *store_class;
+
+ store_class = CAMEL_STORE_CLASS (camel_imapx_store_parent_class);
+ folder = store_class->get_junk (store, ex);
if (folder) {
gchar *state = g_build_filename(((CamelIMAPXStore *)store)->storage_path, "system", "Junk.cmeta", NULL);
static CamelFolder *
imapx_get_trash (CamelStore *store, CamelException *ex)
{
- CamelFolder *folder = CAMEL_STORE_CLASS(parent_class)->get_trash(store, ex);
+ CamelFolder *folder;
+ CamelStoreClass *store_class;
+
+ store_class = CAMEL_STORE_CLASS (camel_imapx_store_parent_class);
+ folder = store_class->get_trash (store, ex);
if (folder) {
gchar *state = g_build_filename(((CamelIMAPXStore *)store)->storage_path, "system", "Trash.cmeta", NULL);
fi->total = ((CamelFolderSummary *)ims)->saved_count;
if (!folder->summary)
- camel_object_unref (ims);
- camel_object_unref (folder);
+ g_object_unref (ims);
+ g_object_unref (folder);
}
}
{
struct _imapx_refresh_msg *m = (struct _imapx_refresh_msg *)msg;
- camel_object_unref (m->store);
+ g_object_unref (m->store);
camel_exception_clear(&m->ex);
}
istore->last_refresh_time = time (NULL);
m = camel_session_thread_msg_new(((CamelService *)store)->session, &imapx_refresh_ops, sizeof(*m));
m->store = store;
- camel_object_ref (store);
+ g_object_ref (store);
camel_exception_init(&m->ex);
camel_session_thread_queue(((CamelService *)store)->session, &m->msg, 0);
}
static gboolean
imapx_can_refresh_folder (CamelStore *store, CamelFolderInfo *info, CamelException *ex)
{
+ CamelStoreClass *store_class;
gboolean res;
- res = CAMEL_STORE_CLASS(parent_class)->can_refresh_folder (store, info, ex) ||
+ store_class = CAMEL_STORE_CLASS (camel_imapx_store_parent_class);
+
+ res = store_class->can_refresh_folder (store, info, ex) ||
(camel_url_get_param (((CamelService *)store)->url, "check_all") != NULL) ||
(camel_url_get_param (((CamelService *)store)->url, "check_lsub") != NULL && (info->flags & CAMEL_FOLDER_SUBSCRIBED) != 0);
- if (!res && !camel_exception_is_set (ex) && CAMEL_IS_IMAP_STORE (store)) {
+ if (!res && !camel_exception_is_set (ex) && CAMEL_IS_IMAPX_STORE (store)) {
CamelStoreInfo *si;
CamelStoreSummary *sm = CAMEL_STORE_SUMMARY (((CamelIMAPXStore *)(store))->summary);
}
static void
-camel_imapx_store_class_init(CamelIMAPXStoreClass *klass)
+camel_imapx_store_class_init(CamelIMAPXStoreClass *class)
{
- CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS(klass);
- CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS(klass);
-
- parent_class = CAMEL_OFFLINE_STORE_CLASS (camel_type_get_global_classfuncs (camel_offline_store_get_type ()));
-
- camel_service_class->construct = imapx_construct;
- camel_service_class->query_auth_types = imapx_query_auth_types;
- camel_service_class->get_name = imapx_get_name;
- camel_service_class->connect = imapx_connect;
- camel_service_class->disconnect = imapx_disconnect;
-
- camel_store_class->get_trash = imapx_get_trash;
- camel_store_class->get_junk = imapx_get_junk;
- camel_store_class->noop = imapx_noop;
- camel_store_class->get_folder = imapx_get_folder;
- camel_store_class->get_inbox = imapx_get_inbox;
- camel_store_class->hash_folder_name = imapx_hash_folder_name;
- camel_store_class->compare_folder_name = imapx_compare_folder_name;
-
- camel_store_class->can_refresh_folder = imapx_can_refresh_folder;
- camel_store_class->create_folder = imapx_create_folder;
- camel_store_class->rename_folder = imapx_rename_folder;
- camel_store_class->delete_folder = imapx_delete_folder;
- camel_store_class->subscribe_folder = imapx_store_subscribe_folder;
- camel_store_class->unsubscribe_folder = imapx_store_unsubscribe_folder;
- camel_store_class->get_folder_info = imapx_get_folder_info;
- camel_store_class->folder_subscribed = imapx_folder_subscribed;
- camel_store_class->free_folder_info = camel_store_free_folder_info_full;
-
- ((CamelStoreClass *)klass)->hash_folder_name = imapx_name_hash;
- ((CamelStoreClass *)klass)->compare_folder_name = imapx_name_equal;
+ GObjectClass *object_class;
+ CamelServiceClass *service_class;
+ CamelStoreClass *store_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = imapx_store_finalize;
+
+ service_class = CAMEL_SERVICE_CLASS (class);
+ service_class->construct = imapx_construct;
+ service_class->query_auth_types = imapx_query_auth_types;
+ service_class->get_name = imapx_get_name;
+ service_class->connect = imapx_connect;
+ service_class->disconnect = imapx_disconnect;
+
+ store_class = CAMEL_STORE_CLASS (class);
+ store_class->get_trash = imapx_get_trash;
+ store_class->get_junk = imapx_get_junk;
+ store_class->noop = imapx_noop;
+ store_class->get_folder = imapx_get_folder;
+ store_class->get_inbox = imapx_get_inbox;
+ store_class->hash_folder_name = imapx_hash_folder_name;
+ store_class->compare_folder_name = imapx_compare_folder_name;
+ store_class->can_refresh_folder = imapx_can_refresh_folder;
+ store_class->create_folder = imapx_create_folder;
+ store_class->rename_folder = imapx_rename_folder;
+ store_class->delete_folder = imapx_delete_folder;
+ store_class->subscribe_folder = imapx_store_subscribe_folder;
+ store_class->unsubscribe_folder = imapx_store_unsubscribe_folder;
+ store_class->get_folder_info = imapx_get_folder_info;
+ store_class->folder_subscribed = imapx_folder_subscribed;
+ store_class->free_folder_info = camel_store_free_folder_info_full;
+ store_class->hash_folder_name = imapx_name_hash;
+ store_class->compare_folder_name = imapx_name_equal;
}
static void
-camel_imapx_store_init (gpointer object, gpointer klass)
+camel_imapx_store_init (CamelIMAPXStore *istore)
{
- CamelStore *store = (CamelStore *) object;
- CamelIMAPXStore *istore = CAMEL_IMAPX_STORE (object);
+ CamelStore *store = CAMEL_STORE (istore);
store->flags |= CAMEL_STORE_ASYNC | CAMEL_STORE_SUBSCRIPTIONS;
istore->get_finfo_lock = g_mutex_new ();
istore->last_refresh_time = time (NULL) - (FINFO_REFRESH_INTERVAL + 10);
istore->dir_sep = '/';
}
-
-static void
-imapx_store_finalize(CamelObject *object)
-{
- CamelIMAPXStore *imapx_store = CAMEL_IMAPX_STORE (object);
-
- /* force disconnect so we dont have it run later, after we've cleaned up some stuff */
- /* SIGH */
-
- camel_service_disconnect((CamelService *)imapx_store, TRUE, NULL);
- g_mutex_free (imapx_store->get_finfo_lock);
-
- if (imapx_store->base_url)
- g_free (imapx_store->base_url);
-}
-
-CamelType
-camel_imapx_store_get_type (void)
-{
- static CamelType camel_imapx_store_type = CAMEL_INVALID_TYPE;
-
- if (!camel_imapx_store_type) {
- camel_imapx_store_type = camel_type_register(camel_offline_store_get_type (),
- "CamelIMAPXStore",
- sizeof (CamelIMAPXStore),
- sizeof (CamelIMAPXStoreClass),
- (CamelObjectClassInitFunc) camel_imapx_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imapx_store_init,
- imapx_store_finalize);
- }
-
- return camel_imapx_store_type;
-}
#ifndef CAMEL_IMAPX_STORE_H
#define CAMEL_IMAPX_STORE_H
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
#include <camel/camel.h>
+#include "camel-imapx-server.h"
#include "camel-imapx-store-summary.h"
-#define CAMEL_IMAPX_STORE_TYPE (camel_imapx_store_get_type ())
-#define CAMEL_IMAPX_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAPX_STORE_TYPE, CamelIMAPXStore))
-#define CAMEL_IMAPX_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAPX_STORE_TYPE, CamelIMAPXStoreClass))
-#define CAMEL_IS_IMAP_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAPX_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_STORE \
+ (camel_imapx_store_get_type ())
+#define CAMEL_IMAPX_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_STORE, CamelIMAPXStore))
+#define CAMEL_IMAPX_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_STORE, CamelIMAPXStoreClass))
+#define CAMEL_IS_IMAPX_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_STORE))
+#define CAMEL_IS_IMAPX_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_STORE))
+#define CAMEL_IMAPX_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_STORE, CamelIMAPXStoreClass))
#define IMAPX_OVERRIDE_NAMESPACE (1 << 0)
#define IMAPX_CHECK_ALL (1 << 1)
#define IMAPX_CHECK_LSUB (1 << 6)
#define IMAPX_USE_IDLE (1 << 7)
-typedef struct {
+G_BEGIN_DECLS
+
+typedef struct _CamelIMAPXStore CamelIMAPXStore;
+typedef struct _CamelIMAPXStoreClass CamelIMAPXStoreClass;
+
+struct _CamelIMAPXStore {
CamelOfflineStore parent;
- struct _CamelIMAPXServer *server;
+ CamelIMAPXServer *server;
CamelIMAPXStoreSummary *summary; /* in-memory list of folders */
gchar *namespace, dir_sep, *base_url, *storage_path;
gchar *login_error;
GPtrArray *pending_list;
-} CamelIMAPXStore;
+};
-typedef struct {
+struct _CamelIMAPXStoreClass {
CamelOfflineStoreClass parent_class;
+};
-} CamelIMAPXStoreClass;
-
-/* Standard Camel function */
-CamelType camel_imapx_store_get_type (void);
+GType camel_imapx_store_get_type (void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
#endif /* CAMEL_IMAPX_STORE_H */
#define t(x)
#define io(x)
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelStream */
-#define CS_CLASS(so) CAMEL_IMAPX_STREAM_CLASS(CAMEL_OBJECT_GET_CLASS(so))
-
#define CAMEL_IMAPX_STREAM_SIZE (4096)
#define CAMEL_IMAPX_STREAM_TOKEN (4096) /* maximum token size */
+G_DEFINE_TYPE (CamelIMAPXStream, camel_imapx_stream, CAMEL_TYPE_STREAM)
+
static gint
-stream_fill(CamelIMAPXStream *is)
+imapx_stream_fill (CamelIMAPXStream *is)
{
gint left = 0;
return -1;
}
+static void
+imapx_stream_dispose (GObject *object)
+{
+ CamelIMAPXStream *stream = CAMEL_IMAPX_STREAM (object);
+
+ if (stream->source != NULL) {
+ g_object_unref (stream->source);
+ stream->source = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_imapx_stream_parent_class)->dispose (object);
+}
+
+static void
+imapx_stream_finalize (GObject *object)
+{
+ CamelIMAPXStream *stream = CAMEL_IMAPX_STREAM (object);
+
+ g_free (stream->buf);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_imapx_stream_parent_class)->finalize (object);
+}
+
static gssize
-stream_read(CamelStream *stream, gchar *buffer, gsize n)
+imapx_stream_read (CamelStream *stream,
+ gchar *buffer,
+ gsize n)
{
CamelIMAPXStream *is = (CamelIMAPXStream *)stream;
gssize max;
}
static gssize
-stream_write(CamelStream *stream, const gchar *buffer, gsize n)
+imapx_stream_write (CamelStream *stream,
+ const gchar *buffer,
+ gsize n)
{
CamelIMAPXStream *is = (CamelIMAPXStream *)stream;
}
static gint
-stream_close(CamelStream *stream)
+imapx_stream_close (CamelStream *stream)
{
/* nop? */
return 0;
}
static gint
-stream_flush(CamelStream *stream)
+imapx_stream_flush (CamelStream *stream)
{
/* nop? */
return 0;
}
static gboolean
-stream_eos(CamelStream *stream)
+imapx_stream_eos (CamelStream *stream)
{
CamelIMAPXStream *is = (CamelIMAPXStream *)stream;
}
static gint
-stream_reset(CamelStream *stream)
+imapx_stream_reset (CamelStream *stream)
{
/* nop? reset literal mode? */
return 0;
}
static void
-camel_imapx_stream_class_init (CamelStreamClass *camel_imapx_stream_class)
+camel_imapx_stream_class_init (CamelIMAPXStreamClass *class)
{
- CamelStreamClass *camel_stream_class = (CamelStreamClass *)camel_imapx_stream_class;
-
- parent_class = camel_type_get_global_classfuncs( CAMEL_TYPE_OBJECT );
-
- /* virtual method definition */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->close = stream_close;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->eos = stream_eos;
- camel_stream_class->reset = stream_reset;
+ GObjectClass *object_class;
+ CamelStreamClass *stream_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = imapx_stream_dispose;
+ object_class->finalize = imapx_stream_finalize;
+
+ stream_class = CAMEL_STREAM_CLASS (class);
+ stream_class->read = imapx_stream_read;
+ stream_class->write = imapx_stream_write;
+ stream_class->close = imapx_stream_close;
+ stream_class->flush = imapx_stream_flush;
+ stream_class->eos = imapx_stream_eos;
+ stream_class->reset = imapx_stream_reset;
}
static void
-camel_imapx_stream_init(CamelIMAPXStream *is, CamelIMAPXStreamClass *isclass)
+camel_imapx_stream_init (CamelIMAPXStream *is)
{
/* +1 is room for appending a 0 if we need to for a token */
is->ptr = is->end = is->buf = g_malloc(CAMEL_IMAPX_STREAM_SIZE+1);
is->tokenend = is->tokenbuf + CAMEL_IMAPX_STREAM_SIZE;
}
-static void
-camel_imapx_stream_finalize(CamelIMAPXStream *is)
-{
- g_free(is->buf);
- if (is->source)
- camel_object_unref (is->source);
-}
-
-CamelType
-camel_imapx_stream_get_type (void)
-{
- static CamelType camel_imapx_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_imapx_stream_type == CAMEL_INVALID_TYPE) {
- camel_imapx_stream_type = camel_type_register( camel_stream_get_type(),
- "CamelIMAPXStream",
- sizeof( CamelIMAPXStream ),
- sizeof( CamelIMAPXStreamClass ),
- (CamelObjectClassInitFunc) camel_imapx_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imapx_stream_init,
- (CamelObjectFinalizeFunc) camel_imapx_stream_finalize );
- }
-
- return camel_imapx_stream_type;
-}
-
/**
* camel_imapx_stream_new:
*
{
CamelIMAPXStream *is;
- is = (CamelIMAPXStream *)camel_object_new(camel_imapx_stream_get_type ());
- camel_object_ref (source);
- is->source = source;
+ is = g_object_new (CAMEL_TYPE_IMAPX_STREAM, NULL);
+ is->source = g_object_ref (source);
return (CamelStream *)is;
}
do {
while (p >= e ) {
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
return IMAPX_TOK_ERROR;
p = is->ptr;
e = is->end;
mem = camel_stream_mem_new();
if (camel_stream_write_to_stream((CamelStream *)is, mem) == -1) {
camel_exception_setv (ex, 1, "nstring: io error: %s", strerror(errno));
- camel_object_unref (mem);
+ g_object_unref (mem);
ret = -1;
break;
}
do {
while (p >= e ) {
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
goto io_error;
p = is->ptr;
e = is->end;
}
}
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
goto io_error;
p = is->ptr;
e = is->end;
}
}
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
goto io_error;
p = is->ptr;
e = is->end;
if (c == '\\') {
while (p >= e) {
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
goto io_error;
p = is->ptr;
e = is->end;
}
}
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
goto io_error;
p = is->ptr;
e = is->end;
}
}
is->ptr = p;
- if (stream_fill(is) == IMAPX_TOK_ERROR)
+ if (imapx_stream_fill(is) == IMAPX_TOK_ERROR)
goto io_error;
p = is->ptr;
e = is->end;
max = is->end - is->ptr;
if (max == 0) {
- max = stream_fill(is);
+ max = imapx_stream_fill(is);
if (max <= 0)
return max;
}
if (is->literal > 0) {
max = is->end - is->ptr;
if (max == 0) {
- max = stream_fill(is);
+ max = imapx_stream_fill(is);
if (max <= 0)
return max;
}
#include <camel/camel.h>
-#define CAMEL_IMAPX_STREAM(obj) CAMEL_CHECK_CAST (obj, camel_imapx_stream_get_type (), CamelIMAPXStream)
-#define CAMEL_IMAPX_STREAM_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imapx_stream_get_type (), CamelIMAPXStreamClass)
-#define CAMEL_IS_IMAPX_STREAM(obj) CAMEL_CHECK_TYPE (obj, camel_imapx_stream_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_STREAM \
+ (camel_imapx_stream_get_type ())
+#define CAMEL_IMAPX_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_STREAM, CamelIMAPXStream))
+#define CAMEL_IMAPX_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_STREAM, CamelIMAPXStreamClass))
+#define CAMEL_IS_IMAPX_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_STREAM))
+#define CAMEL_IS_IMAPX_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_STREAM))
+#define CAMEL_IMAPX_STREAM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_STREAM, CamelIMAPXStreamClass))
+
+G_BEGIN_DECLS
-typedef struct _CamelIMAPXStreamClass CamelIMAPXStreamClass;
typedef struct _CamelIMAPXStream CamelIMAPXStream;
+typedef struct _CamelIMAPXStreamClass CamelIMAPXStreamClass;
typedef enum {
IMAPX_TOK_PROTOCOL = -2,
CamelStreamClass parent_class;
};
-CamelType camel_imapx_stream_get_type (void);
-
-CamelStream *camel_imapx_stream_new (CamelStream *source);
-
-gint camel_imapx_stream_buffered (CamelIMAPXStream *is);
-
-camel_imapx_token_t camel_imapx_stream_token (CamelIMAPXStream *is, guchar **start, guint *len, CamelException *ex); /* throws IO,PARSE exception */
-void camel_imapx_stream_ungettoken (CamelIMAPXStream *is, camel_imapx_token_t tok, guchar *token, guint len);
-
-void camel_imapx_stream_set_literal (CamelIMAPXStream *is, guint literal);
-gint camel_imapx_stream_gets (CamelIMAPXStream *is, guchar **start, guint *len);
-gint camel_imapx_stream_getl (CamelIMAPXStream *is, guchar **start, guint *len);
+GType camel_imapx_stream_get_type (void);
+CamelStream * camel_imapx_stream_new (CamelStream *source);
+gint camel_imapx_stream_buffered (CamelIMAPXStream *is);
+
+/* throws IO,PARSE exception */
+camel_imapx_token_t
+ camel_imapx_stream_token (CamelIMAPXStream *is,
+ guchar **start,
+ guint *len,
+ CamelException *ex);
+
+void camel_imapx_stream_ungettoken (CamelIMAPXStream *is,
+ camel_imapx_token_t tok,
+ guchar *token,
+ guint len);
+void camel_imapx_stream_set_literal (CamelIMAPXStream *is,
+ guint literal);
+gint camel_imapx_stream_gets (CamelIMAPXStream *is,
+ guchar **start,
+ guint *len);
+gint camel_imapx_stream_getl (CamelIMAPXStream *is,
+ guchar **start,
+ guint *len);
/* all throw IO,PARSE exceptions */
/* gets an atom, upper-cases */
-gint camel_imapx_stream_atom (CamelIMAPXStream *is, guchar **start, guint *len, CamelException *ex);
+gint camel_imapx_stream_atom (CamelIMAPXStream *is,
+ guchar **start,
+ guint *len,
+ CamelException *ex);
/* gets an atom or string */
-gint camel_imapx_stream_astring (CamelIMAPXStream *is, guchar **start, CamelException *ex);
+gint camel_imapx_stream_astring (CamelIMAPXStream *is,
+ guchar **start,
+ CamelException *ex);
/* gets a NIL or a string, start==NULL if NIL */
-gint camel_imapx_stream_nstring (CamelIMAPXStream *is, guchar **start, CamelException *ex);
+gint camel_imapx_stream_nstring (CamelIMAPXStream *is,
+ guchar **start,
+ CamelException *ex);
/* gets a NIL or string into a stream, stream==NULL if NIL */
-gint camel_imapx_stream_nstring_stream(CamelIMAPXStream *is, CamelStream **stream, CamelException *ex);
+gint camel_imapx_stream_nstring_stream
+ (CamelIMAPXStream *is,
+ CamelStream **stream,
+ CamelException *ex);
/* gets 'text' */
-gint camel_imapx_stream_text (CamelIMAPXStream *is, guchar **text, CamelException *ex);
+gint camel_imapx_stream_text (CamelIMAPXStream *is,
+ guchar **text,
+ CamelException *ex);
/* gets a 'number' */
-guint32 camel_imapx_stream_number(CamelIMAPXStream *is, CamelException *ex);
+guint32 camel_imapx_stream_number (CamelIMAPXStream *is,
+ CamelException *ex);
/* skips the rest of a line, including literals, etc */
-gint camel_imapx_stream_skip(CamelIMAPXStream *is, CamelException *ex);
+gint camel_imapx_stream_skip (CamelIMAPXStream *is,
+ CamelException *ex);
+
+G_END_DECLS
#endif /* CAMEL_IMAPX_STREAM_H */
static gint content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir);
static CamelMessageContentInfo * content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir);
-static void camel_imapx_summary_class_init (CamelIMAPXSummaryClass *klass);
-static void camel_imapx_summary_init (CamelIMAPXSummary *obj);
-
-static CamelFolderSummaryClass *camel_imapx_summary_parent;
-
-CamelType
-camel_imapx_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(
- camel_folder_summary_get_type(), "CamelIMAPXSummary",
- sizeof (CamelIMAPXSummary),
- sizeof (CamelIMAPXSummaryClass),
- (CamelObjectClassInitFunc) camel_imapx_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imapx_summary_init,
- NULL);
- }
-
- return type;
-}
+G_DEFINE_TYPE (CamelIMAPXSummary, camel_imapx_summary, CAMEL_TYPE_FOLDER_SUMMARY)
static CamelMessageInfo *
imapx_message_info_clone(CamelFolderSummary *s, const CamelMessageInfo *mi)
{
CamelIMAPXMessageInfo *to;
+ CamelFolderSummaryClass *folder_summary_class;
const CamelIMAPXMessageInfo *from = (const CamelIMAPXMessageInfo *)mi;
- to = (CamelIMAPXMessageInfo *)camel_imapx_summary_parent->message_info_clone(s, mi);
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ to = (CamelIMAPXMessageInfo *)
+ folder_summary_class->message_info_clone(s, mi);
to->server_flags = from->server_flags;
/* FIXME: parent clone should do this */
}
static void
-camel_imapx_summary_class_init (CamelIMAPXSummaryClass *klass)
+camel_imapx_summary_class_init (CamelIMAPXSummaryClass *class)
{
- CamelFolderSummaryClass *cfs_class = (CamelFolderSummaryClass *) klass;
-
- camel_imapx_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type()));
-
- cfs_class->message_info_size = sizeof(CamelIMAPXMessageInfo);
- cfs_class->content_info_size = sizeof(CamelIMAPXMessageContentInfo);
-
- cfs_class->message_info_clone = imapx_message_info_clone;
-
- cfs_class->summary_header_load = summary_header_load;
- cfs_class->summary_header_save = summary_header_save;
- cfs_class->message_info_load = message_info_load;
- cfs_class->message_info_save = message_info_save;
- cfs_class->content_info_load = content_info_load;
- cfs_class->content_info_save = content_info_save;
-
- cfs_class->summary_header_to_db = summary_header_to_db;
- cfs_class->summary_header_from_db = summary_header_from_db;
- cfs_class->message_info_to_db = message_info_to_db;
- cfs_class->message_info_from_db = message_info_from_db;
- cfs_class->content_info_to_db = content_info_to_db;
- cfs_class->content_info_from_db = content_info_from_db;
-
- cfs_class->info_set_user_flag = info_set_user_flag;
+ CamelFolderSummaryClass *folder_summary_class;
+
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
+ folder_summary_class->message_info_size = sizeof (CamelIMAPXMessageInfo);
+ folder_summary_class->content_info_size = sizeof (CamelIMAPXMessageContentInfo);
+ folder_summary_class->message_info_clone = imapx_message_info_clone;
+ folder_summary_class->summary_header_load = summary_header_load;
+ folder_summary_class->summary_header_save = summary_header_save;
+ folder_summary_class->message_info_load = message_info_load;
+ folder_summary_class->message_info_save = message_info_save;
+ folder_summary_class->content_info_load = content_info_load;
+ folder_summary_class->content_info_save = content_info_save;
+ folder_summary_class->summary_header_to_db = summary_header_to_db;
+ folder_summary_class->summary_header_from_db = summary_header_from_db;
+ folder_summary_class->message_info_to_db = message_info_to_db;
+ folder_summary_class->message_info_from_db = message_info_from_db;
+ folder_summary_class->content_info_to_db = content_info_to_db;
+ folder_summary_class->content_info_from_db = content_info_from_db;
+ folder_summary_class->info_set_user_flag = info_set_user_flag;
}
static void
CamelFolderSummary *
camel_imapx_summary_new (struct _CamelFolder *folder, const gchar *filename)
{
- CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (camel_object_new (camel_imapx_summary_get_type ()));
+ CamelFolderSummary *summary;
CamelException ex;
camel_exception_init (&ex);
+ summary = g_object_new (CAMEL_TYPE_IMAPX_SUMMARY, NULL);
+
summary->folder = folder;
/* Don't do DB sort. Its pretty slow to load */
if (folder && 0) {
summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir)
{
CamelIMAPXSummary *ims = CAMEL_IMAPX_SUMMARY (s);
+ CamelFolderSummaryClass *folder_summary_class;
gchar *part;
- if (camel_imapx_summary_parent->summary_header_from_db (s, mir) == -1)
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ if (folder_summary_class->summary_header_from_db (s, mir) == -1)
return -1;
part = mir->bdata;
summary_header_load (CamelFolderSummary *s, FILE *in)
{
CamelIMAPXSummary *ims = CAMEL_IMAPX_SUMMARY (s);
+ CamelFolderSummaryClass *folder_summary_class;
- if (camel_imapx_summary_parent->summary_header_load (s, in) == -1)
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ if (folder_summary_class->summary_header_load (s, in) == -1)
return -1;
/* Legacy version */
summary_header_to_db (CamelFolderSummary *s, CamelException *ex)
{
CamelIMAPXSummary *ims = CAMEL_IMAPX_SUMMARY(s);
+ CamelFolderSummaryClass *folder_summary_class;
struct _CamelFIRecord *fir;
- fir = camel_imapx_summary_parent->summary_header_to_db (s, ex);
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ fir = folder_summary_class->summary_header_to_db (s, ex);
if (!fir)
return NULL;
fir->bdata = g_strdup_printf ("%d %u", CAMEL_IMAPX_SUMMARY_VERSION, ims->validity);
summary_header_save (CamelFolderSummary *s, FILE *out)
{
CamelIMAPXSummary *ims = CAMEL_IMAPX_SUMMARY(s);
+ CamelFolderSummaryClass *folder_summary_class;
- if (camel_imapx_summary_parent->summary_header_save (s, out) == -1)
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ if (folder_summary_class->summary_header_save (s, out) == -1)
return -1;
camel_file_util_encode_fixed_int32(out, CAMEL_IMAPX_SUMMARY_VERSION);
{
CamelMessageInfo *info;
CamelIMAPXMessageInfo *iinfo;
+ CamelFolderSummaryClass *folder_summary_class;
+
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
- info = camel_imapx_summary_parent->message_info_from_db (s, mir);
+ info = folder_summary_class->message_info_from_db (s, mir);
if (info) {
gchar *part = g_strdup (mir->bdata), *tmp;
tmp = part;
{
CamelMessageInfo *info;
CamelIMAPXMessageInfo *iinfo;
+ CamelFolderSummaryClass *folder_summary_class;
- info = camel_imapx_summary_parent->message_info_load (s, in);
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ info = folder_summary_class->message_info_load (s, in);
if (info) {
iinfo = (CamelIMAPXMessageInfo *)info;
message_info_to_db (CamelFolderSummary *s, CamelMessageInfo *info)
{
CamelIMAPXMessageInfo *iinfo = (CamelIMAPXMessageInfo *)info;
+ CamelFolderSummaryClass *folder_summary_class;
struct _CamelMIRecord *mir;
- mir = camel_imapx_summary_parent->message_info_to_db (s, info);
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ mir = folder_summary_class->message_info_to_db (s, info);
if (mir)
mir->bdata = g_strdup_printf ("%u", iinfo->server_flags);
message_info_save (CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
{
CamelIMAPXMessageInfo *iinfo = (CamelIMAPXMessageInfo *)info;
+ CamelFolderSummaryClass *folder_summary_class;
- if (camel_imapx_summary_parent->message_info_save (s, out, info) == -1)
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ if (folder_summary_class->message_info_save (s, out, info) == -1)
return -1;
return camel_file_util_encode_uint32 (out, iinfo->server_flags);
static gboolean
info_set_user_flag (CamelMessageInfo *info, const gchar *id, gboolean state)
{
+ CamelFolderSummaryClass *folder_summary_class;
gboolean res;
- res = camel_imapx_summary_parent->info_set_user_flag (info, id, state);
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
+ res = folder_summary_class->info_set_user_flag (info, id, state);
/* there was a change, so do not forget to store it to server */
if (res)
static CamelMessageContentInfo *
content_info_from_db (CamelFolderSummary *s, CamelMIRecord *mir)
{
+ CamelFolderSummaryClass *folder_summary_class;
gchar *part = mir->cinfo;
guint32 type=0;
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
if (part) {
if (*part == ' ')
part++;
}
mir->cinfo = part;
if (type)
- return camel_imapx_summary_parent->content_info_from_db (s, mir);
+ return folder_summary_class->content_info_from_db (s, mir);
else
return camel_folder_summary_content_info_new (s);
}
static CamelMessageContentInfo *
content_info_load (CamelFolderSummary *s, FILE *in)
{
+ CamelFolderSummaryClass *folder_summary_class;
+
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
if (fgetc (in))
- return camel_imapx_summary_parent->content_info_load (s, in);
+ return folder_summary_class->content_info_load (s, in);
else
return camel_folder_summary_content_info_new (s);
}
static gint
content_info_to_db (CamelFolderSummary *s, CamelMessageContentInfo *info, CamelMIRecord *mir)
{
+ CamelFolderSummaryClass *folder_summary_class;
gchar *oldr;
+
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
if (info->type) {
oldr = mir->cinfo;
mir->cinfo = oldr ? g_strdup_printf("%s 1", oldr) : g_strdup ("1");
g_free(oldr);
- return camel_imapx_summary_parent->content_info_to_db (s, info, mir);
+ return folder_summary_class->content_info_to_db (s, info, mir);
} else {
oldr = mir->cinfo;
mir->cinfo = oldr ? g_strdup_printf("%s 0", oldr) : g_strdup ("0");
content_info_save (CamelFolderSummary *s, FILE *out,
CamelMessageContentInfo *info)
{
+ CamelFolderSummaryClass *folder_summary_class;
+
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_imapx_summary_parent_class);
+
if (info->type) {
fputc (1, out);
- return camel_imapx_summary_parent->content_info_save (s, out, info);
+ return folder_summary_class->content_info_save (s, out, info);
} else
return fputc (0, out);
}
#include <camel/camel.h>
-#define CAMEL_IMAPX_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_imapx_summary_get_type (), CamelIMAPXSummary)
-#define CAMEL_IMAPX_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imapx_summary_get_type (), CamelIMAPXSummaryClass)
-#define CAMEL_IS_IMAPX_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_imapx_summary_get_type ())
-
-#define CAMEL_IMAPX_SERVER_FLAGS (CAMEL_MESSAGE_ANSWERED | \
- CAMEL_MESSAGE_DELETED | \
- CAMEL_MESSAGE_DRAFT | \
- CAMEL_MESSAGE_FLAGGED | \
- CAMEL_MESSAGE_SEEN)
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_SUMMARY \
+ (camel_imapx_summary_get_type ())
+#define CAMEL_IMAPX_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_SUMMARY, CamelIMAPXSummary))
+#define CAMEL_IMAPX_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_SUMMARY, CamelIMAPXSummaryClass))
+#define CAMEL_IS_IMAPX_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_SUMMARY))
+#define CAMEL_IS_IMAPX_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_SUMMARY))
+#define CAMEL_IMAPX_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_SUMMARY, CamelIMAPXSummaryClass))
+
+#define CAMEL_IMAPX_SERVER_FLAGS \
+ (CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_DELETED | \
+ CAMEL_MESSAGE_DRAFT | CAMEL_MESSAGE_FLAGGED | \
+ CAMEL_MESSAGE_SEEN)
G_BEGIN_DECLS
-typedef struct _CamelIMAPXSummaryClass CamelIMAPXSummaryClass;
typedef struct _CamelIMAPXSummary CamelIMAPXSummary;
+typedef struct _CamelIMAPXSummaryClass CamelIMAPXSummaryClass;
-typedef struct _CamelIMAPXMessageContentInfo {
- CamelMessageContentInfo info;
+typedef struct _CamelIMAPXMessageInfo CamelIMAPXMessageInfo;
+typedef struct _CamelIMAPXMessageContentInfo CamelIMAPXMessageContentInfo;
-} CamelIMAPXMessageContentInfo;
+struct _CamelIMAPXMessageContentInfo {
+ CamelMessageContentInfo info;
+};
-typedef struct _CamelIMAPXMessageInfo {
+struct _CamelIMAPXMessageInfo {
CamelMessageInfoBase info;
guint32 server_flags;
- struct _CamelFlag *server_user_flags;
-} CamelIMAPXMessageInfo;
+ CamelFlag *server_user_flags;
+};
struct _CamelIMAPXSummary {
CamelFolderSummary parent;
struct _CamelIMAPXSummaryClass {
CamelFolderSummaryClass parent_class;
-
};
-CamelType camel_imapx_summary_get_type (void);
-CamelFolderSummary *camel_imapx_summary_new (struct _CamelFolder *folder, const gchar *filename);
-
-void camel_imapx_summary_add_offline (CamelFolderSummary *summary,
- const gchar *uid,
- CamelMimeMessage *message,
- const CamelMessageInfo *info);
-
-void camel_imapx_summary_add_offline_uncached (CamelFolderSummary *summary,
- const gchar *uid,
- const CamelMessageInfo *info);
+GType camel_imapx_summary_get_type (void);
+CamelFolderSummary *
+ camel_imapx_summary_new (CamelFolder *folder,
+ const gchar *filename);
+void camel_imapx_summary_add_offline (CamelFolderSummary *summary,
+ const gchar *uid,
+ CamelMimeMessage *message,
+ const CamelMessageInfo *info);
+void camel_imapx_summary_add_offline_uncached
+ (CamelFolderSummary *summary,
+ const gchar *uid,
+ const CamelMessageInfo *info);
G_END_DECLS
return;
if (finfo->body)
- camel_object_unref (finfo->body);
+ g_object_unref (finfo->body);
if (finfo->text)
- camel_object_unref (finfo->text);
+ g_object_unref (finfo->text);
if (finfo->header)
- camel_object_unref (finfo->header);
+ g_object_unref (finfo->header);
if (finfo->minfo)
camel_message_info_free(finfo->minfo);
if (finfo->cinfo)
camel_stream_printf(sout, "Section: '%s'\n", finfo->section);
if (finfo->date)
camel_stream_printf(sout, "UID: '%s'\n", finfo->uid);
- camel_object_unref (sout);
+ g_object_unref (sout);
}
struct _fetch_info *
#include "camel-view-summary-disk.h"
-typedef struct _CamelIMAPXViewSummary CamelIMAPXViewSummary;
+/* Standard GObject macros */
+#define CAMEL_TYPE_IMAPX_VIEW_SUMMARY \
+ (camel_imapx_view_summary_get_type ())
+#define CAMEL_IMAPX_VIEW_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_IMAPX_VIEW_SUMMARY, CamelIMAPXViewSummary))
+#define CAMEL_IMAPX_VIEW_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_IMAPX_VIEW_SUMMARY, CamelIMAPXViewSummaryClass))
+#define CAMEL_IS_IMAPX_VIEW_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_IMAPX_VIEW_SUMMARY))
+#define CAMEL_IS_IMAPX_VIEW_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_IMAPX_VIEW_SUMMARY))
+#define CAMEL_IMAPX_VIEW_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_IMAPX_VIEW_SUMMARY, CamelIMAPXViewSummaryClass))
+
+G_BEGIN_DECLS
+
+typedef struct _CamelIMAPXViewSummary CamelIMAPXViewSummary;
typedef struct _CamelIMAPXViewSummaryClass CamelIMAPXViewSummaryClass;
enum {
CamelViewSummaryDiskClass parent_class;
};
-CamelType camel_imapx_view_summary_get_type (void);
-CamelIMAPXViewSummary *camel_imapx_view_summary_new (const gchar *base, CamelException *ex);
+GType camel_imapx_view_summary_get_type (void);
+CamelIMAPXViewSummary *
+ camel_imapx_view_summary_new (const gchar *base,
+ CamelException *ex);
/* called on root view */
-guint32 camel_imapx_view_next_uid(CamelIMAPXView *view);
-void camel_imapx_view_last_uid(CamelIMAPXView *view, guint32 uid);
+guint32 camel_imapx_view_next_uid (CamelIMAPXView *view);
+void camel_imapx_view_last_uid (CamelIMAPXView *view,
+ guint32 uid);
+
+G_END_DECLS
#endif /* CAMEL_IMAPX_VIEW_SUMMARY_H */
camel_provider_init ();
ex = camel_exception_new ();
- session = CAMEL_SESSION (camel_object_new (CAMEL_SESSION_TYPE));
+ session = g_object_new (CAMEL_TYPE_SESSION, NULL);
camel_session_construct (session, "/tmp/test-camel-imapx");
service = camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, ex);
#define PATH_MAX _POSIX_PATH_MAX
#endif
-static gpointer camel_local_folder_parent_class;
+#define CAMEL_LOCAL_FOLDER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_LOCAL_FOLDER, CamelLocalFolderPrivate))
+
static GSList *local_folder_properties;
static gint local_getv(CamelObject *object, CamelException *ex, CamelArgGetV *args);
{ CAMEL_LOCAL_FOLDER_INDEX_BODY, "index_body", N_("Index message body data") },
};
+G_DEFINE_TYPE (CamelLocalFolder, camel_local_folder, CAMEL_TYPE_FOLDER)
+
static void
-local_folder_finalize (CamelLocalFolder *local_folder)
+local_folder_dispose (GObject *object)
{
- CamelFolder *folder = CAMEL_FOLDER (local_folder);
+ CamelFolder *folder;
+ CamelLocalFolder *local_folder;
+
+ folder = CAMEL_FOLDER (object);
+ local_folder = CAMEL_LOCAL_FOLDER (object);
- if (folder->summary) {
+ if (folder->summary != NULL) {
camel_local_summary_sync (
CAMEL_LOCAL_SUMMARY (folder->summary),
FALSE, local_folder->changes, NULL);
- camel_object_unref (folder->summary);
+ g_object_unref (folder->summary);
folder->summary = NULL;
}
- if (local_folder->search)
- camel_object_unref (local_folder->search);
+ if (local_folder->search != NULL) {
+ g_object_unref (local_folder->search);
+ local_folder->search = NULL;
+ }
- if (local_folder->index)
- camel_object_unref (local_folder->index);
+ if (local_folder->index != NULL) {
+ g_object_unref (local_folder->index);
+ local_folder->index = NULL;
+ }
- while (local_folder->locked> 0)
- camel_local_folder_unlock(local_folder);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_local_folder_parent_class)->dispose (object);
+}
+
+static void
+local_folder_finalize (GObject *object)
+{
+ CamelLocalFolder *local_folder;
+
+ local_folder = CAMEL_LOCAL_FOLDER (object);
+
+ while (local_folder->locked > 0)
+ camel_local_folder_unlock (local_folder);
g_free (local_folder->base_path);
g_free (local_folder->folder_path);
g_mutex_free (local_folder->priv->search_lock);
- g_free (local_folder->priv);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_local_folder_parent_class)->finalize (object);
}
static void
camel_local_folder_class_init (CamelLocalFolderClass *class)
{
+ GObjectClass *object_class;
CamelObjectClass *camel_object_class;
CamelFolderClass *folder_class;
gint ii;
- camel_local_folder_parent_class = (CamelFolderClass *)camel_folder_get_type();
+ g_type_class_add_private (class, sizeof (CamelLocalFolderPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = local_folder_dispose;
+ object_class->finalize = local_folder_finalize;
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = local_getv;
{
CamelFolder *folder = CAMEL_FOLDER (local_folder);
- local_folder->priv = g_new0 (CamelLocalFolderPrivate, 1);
+ local_folder->priv = CAMEL_LOCAL_FOLDER_GET_PRIVATE (local_folder);
local_folder->priv->search_lock = g_mutex_new();
folder->folder_flags |= (CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY |
local_folder->search = NULL;
}
-CamelType
-camel_local_folder_get_type(void)
-{
- static CamelType camel_local_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_local_folder_type == CAMEL_INVALID_TYPE) {
- camel_local_folder_type = camel_type_register(camel_folder_get_type(), "CamelLocalFolder",
- sizeof(CamelLocalFolder),
- sizeof(CamelLocalFolderClass),
- (CamelObjectClassInitFunc) camel_local_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_local_folder_init,
- (CamelObjectFinalizeFunc) local_folder_finalize);
- }
-
- return camel_local_folder_type;
-}
-
CamelLocalFolder *
camel_local_folder_construct(CamelLocalFolder *lf, CamelStore *parent_store, const gchar *full_name, guint32 flags, CamelException *ex)
{
if (camel_local_summary_check((CamelLocalSummary *)folder->summary, lf->changes, ex) == 0) {
/* we sync here so that any hard work setting up the folder isn't lost */
if (camel_local_summary_sync((CamelLocalSummary *)folder->summary, FALSE, lf->changes, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (folder));
+ g_object_unref (CAMEL_OBJECT (folder));
g_free(name);
return NULL;
}
/*if (camel_local_summary_check((CamelLocalSummary *)folder->summary, lf->changes, ex) == -1) {*/
/* we sync here so that any hard work setting up the folder isn't lost */
/*if (camel_local_summary_sync((CamelLocalSummary *)folder->summary, FALSE, lf->changes, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (folder));
+ g_object_unref (CAMEL_OBJECT (folder));
g_free(name);
return NULL;
}*/
#include "camel-local-summary.h"
-#define CAMEL_LOCAL_FOLDER_TYPE (camel_local_folder_get_type ())
-#define CAMEL_LOCAL_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_LOCAL_FOLDER_TYPE, CamelLocalFolder))
-#define CAMEL_LOCAL_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_LOCAL_FOLDER_TYPE, CamelLocalFolderClass))
-#define CAMEL_IS_LOCAL_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_LOCAL_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_LOCAL_FOLDER \
+ (camel_local_folder_get_type ())
+#define CAMEL_LOCAL_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_LOCAL_FOLDER, CamelLocalFolder))
+#define CAMEL_LOCAL_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_LOCAL_FOLDER, CamelLocalFolderClass))
+#define CAMEL_IS_LOCAL_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_LOCAL_FOLDER))
+#define CAMEL_IS_LOCAL_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_LOCAL_FOLDER))
#define CAMEL_LOCAL_FOLDER_GET_CLASS(obj) \
- ((CamelLocalFolderClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_LOCAL_FOLDER, CamelLocalFolderClass))
G_BEGIN_DECLS
CamelLocalFolder *camel_local_folder_construct(CamelLocalFolder *lf, CamelStore *parent_store,
const gchar *full_name, guint32 flags, CamelException *ex);
-/* Standard Camel function */
-CamelType camel_local_folder_get_type(void);
+GType camel_local_folder_get_type(void);
/* Lock the folder for internal use. May be called repeatedly */
/* UNIMPLEMENTED */
#else
mbox_conf_entries[0].value = ""; /* default path */
#endif
- mbox_provider.object_types[CAMEL_PROVIDER_STORE] = CAMEL_MBOX_STORE_TYPE;
+ mbox_provider.object_types[CAMEL_PROVIDER_STORE] = CAMEL_TYPE_MBOX_STORE;
mbox_provider.url_hash = local_url_hash;
mbox_provider.url_equal = local_url_equal;
mbox_provider.translation_domain = GETTEXT_PACKAGE;
static gchar *local_get_full_path(CamelLocalStore *lf, const gchar *full_name);
static gchar *local_get_meta_path(CamelLocalStore *lf, const gchar *full_name, const gchar *ext);
-static gpointer camel_local_store_parent_class;
+G_DEFINE_TYPE (CamelLocalStore, camel_local_store, CAMEL_TYPE_STORE)
static void
-local_store_finalize (CamelLocalStore *local_store)
+local_store_finalize (GObject *object)
{
+ CamelLocalStore *local_store = CAMEL_LOCAL_STORE (object);
+
g_free (local_store->toplevel_dir);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_local_store_parent_class)->finalize (object);
}
static void
camel_local_store_class_init (CamelLocalStoreClass *class)
{
+ GObjectClass *object_class;
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_local_store_parent_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = local_store_finalize;
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = construct;
class->get_meta_path = local_get_meta_path;
}
-CamelType
-camel_local_store_get_type (void)
+static void
+camel_local_store_init (CamelLocalStore *local_store)
{
- static CamelType camel_local_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_local_store_type == CAMEL_INVALID_TYPE) {
- camel_local_store_type = camel_type_register (CAMEL_STORE_TYPE, "CamelLocalStore",
- sizeof (CamelLocalStore),
- sizeof (CamelLocalStoreClass),
- (CamelObjectClassInitFunc) camel_local_store_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) local_store_finalize);
- }
-
- return camel_local_store_type;
}
static gboolean
folder = CAMEL_STORE_GET_CLASS (store)->get_folder (
store, name, CAMEL_STORE_FOLDER_CREATE, ex);
if (folder) {
- camel_object_unref (folder);
+ g_object_unref (folder);
info = CAMEL_STORE_GET_CLASS (store)->get_folder_info (
store, name, 0, ex);
g_free(oldibex);
if (folder)
- camel_object_unref (folder);
+ g_object_unref (folder);
return TRUE;
g_free(oldibex);
if (folder)
- camel_object_unref (folder);
+ g_object_unref (folder);
return FALSE;
}
if ((lf = camel_store_get_folder (store, folder_name, 0, &lex))) {
camel_object_get (lf, NULL, CAMEL_OBJECT_STATE_FILE, &str, NULL);
camel_object_set (lf, NULL, CAMEL_OBJECT_STATE_FILE, NULL, NULL);
- camel_object_unref (lf);
+ g_object_unref (lf);
} else {
camel_exception_clear (&lex);
}
#include <camel/camel.h>
-#define CAMEL_LOCAL_STORE_TYPE (camel_local_store_get_type ())
-#define CAMEL_LOCAL_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_LOCAL_STORE_TYPE, CamelLocalStore))
-#define CAMEL_LOCAL_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_LOCAL_STORE_TYPE, CamelLocalStoreClass))
-#define CAMEL_IS_LOCAL_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_LOCAL_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_LOCAL_STORE \
+ (camel_local_store_get_type ())
+#define CAMEL_LOCAL_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_LOCAL_STORE, CamelLocalStore))
+#define CAMEL_LOCAL_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_LOCAL_STORE, CamelLocalStoreClass))
+#define CAMEL_IS_LOCAL_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_LOCAL_STORE))
+#define CAMEL_IS_LOCAL_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_LOCAL_STORE))
#define CAMEL_LOCAL_STORE_GET_CLASS(obj) \
- ((CamelLocalStoreClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_LOCAL_STORE, CamelLocalStoreClass))
G_BEGIN_DECLS
gchar *(*get_meta_path)(CamelLocalStore *ls, const gchar *full_name, const gchar *ext);
};
-CamelType camel_local_store_get_type (void);
+GType camel_local_store_get_type (void);
const gchar *camel_local_store_get_toplevel_dir (CamelLocalStore *store);
static CamelMessageInfo *local_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);
static gint local_summary_need_index(void);
-static gpointer camel_local_summary_parent_class;
+G_DEFINE_TYPE (CamelLocalSummary, camel_local_summary, CAMEL_TYPE_FOLDER_SUMMARY)
static void
-local_summary_finalize (CamelLocalSummary *local_summary)
+local_summary_dispose (GObject *object)
{
- if (local_summary->index)
- camel_object_unref (local_summary->index);
+ CamelLocalSummary *local_summary;
+
+ local_summary = CAMEL_LOCAL_SUMMARY (object);
+
+ if (local_summary->index != NULL) {
+ g_object_unref (local_summary->index);
+ local_summary->index = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_local_summary_parent_class)->dispose (object);
+}
+
+static void
+local_summary_finalize (GObject *object)
+{
+ CamelLocalSummary *local_summary;
+
+ local_summary = CAMEL_LOCAL_SUMMARY (object);
+
g_free (local_summary->folder_path);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_local_summary_parent_class)->finalize (object);
}
static void
camel_local_summary_class_init (CamelLocalSummaryClass *class)
{
+ GObjectClass *object_class;
CamelFolderSummaryClass *folder_summary_class;
- camel_local_summary_parent_class = CAMEL_FOLDER_SUMMARY_CLASS(camel_type_get_global_classfuncs(camel_folder_summary_get_type()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = local_summary_dispose;
+ object_class->finalize = local_summary_finalize;
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->message_info_size = sizeof (CamelLocalMessageInfo);
folder_summary->version += CAMEL_LOCAL_SUMMARY_VERSION;
}
-CamelType
-camel_local_summary_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_folder_summary_get_type(), "CamelLocalSummary",
- sizeof (CamelLocalSummary),
- sizeof (CamelLocalSummaryClass),
- (CamelObjectClassInitFunc) camel_local_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_local_summary_init,
- (CamelObjectFinalizeFunc) local_summary_finalize);
- }
-
- return type;
-}
-
void
camel_local_summary_construct(CamelLocalSummary *new, const gchar *filename, const gchar *local_name, CamelIndex *index)
{
new->folder_path = g_strdup(local_name);
new->index = index;
if (index)
- camel_object_ref (index);
+ g_object_ref (index);
}
static gint
camel_data_wrapper_write_to_stream((CamelDataWrapper *)msg, (CamelStream *)sn);
mi->info.size = sn->written;
- camel_object_unref (sn);
+ g_object_unref (sn);
}
mi->info.flags &= ~(CAMEL_MESSAGE_FOLDER_NOXEV|CAMEL_MESSAGE_FOLDER_FLAGGED);
#include <camel/camel.h>
-#define CAMEL_LOCAL_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_local_summary_get_type (), CamelLocalSummary)
-#define CAMEL_LOCAL_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_local_summary_get_type (), CamelLocalSummaryClass)
-#define CAMEL_IS_LOCAL_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_local_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_LOCAL_SUMMARY \
+ (camel_local_summary_get_type ())
+#define CAMEL_LOCAL_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_LOCAL_SUMMARY, CamelLocalSummary))
+#define CAMEL_LOCAL_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_LOCAL_SUMMARY, CamelLocalSummaryClass))
+#define CAMEL_IS_LOCAL_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_LOCAL_SUMMARY))
+#define CAMEL_IS_LOCAL_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_LOCAL_SUMMARY))
#define CAMEL_LOCAL_SUMMARY_GET_CLASS(obj) \
- ((CamelLocalSummaryClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_LOCAL_SUMMARY, CamelLocalSummaryClass))
G_BEGIN_DECLS
gint (*need_index)(void);
};
-CamelType camel_local_summary_get_type (void);
+GType camel_local_summary_get_type (void);
void camel_local_summary_construct (CamelLocalSummary *new, const gchar *filename, const gchar *local_name, CamelIndex *index);
/* load/check the summary */
#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-static gpointer camel_maildir_folder_parent_class;
-
static CamelLocalSummary *maildir_create_summary(CamelLocalFolder *lf, const gchar *path, const gchar *folder, CamelIndex *index);
static gboolean maildir_append_message(CamelFolder * folder, CamelMimeMessage * message, const CamelMessageInfo *info, gchar **appended_uid, CamelException * ex);
static void maildir_sort_uids (CamelFolder *folder, GPtrArray *uids);
static gboolean maildir_transfer_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder *dest, GPtrArray **transferred_uids, gboolean delete_originals, CamelException *ex);
+G_DEFINE_TYPE (CamelMaildirFolder, camel_maildir_folder, CAMEL_TYPE_LOCAL_FOLDER)
+
static gint
maildir_folder_getv (CamelObject *object,
CamelException *ex,
CamelFolderClass *folder_class;
CamelLocalFolderClass *local_folder_class;
- camel_maildir_folder_parent_class = CAMEL_LOCAL_FOLDER_CLASS (camel_type_get_global_classfuncs(camel_local_folder_get_type()));
-
camel_object_class = CAMEL_OBJECT_CLASS (class);
camel_object_class->getv = maildir_folder_getv;
{
}
-CamelType
-camel_maildir_folder_get_type(void)
-{
- static CamelType camel_maildir_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_maildir_folder_type == CAMEL_INVALID_TYPE) {
- camel_maildir_folder_type = camel_type_register(CAMEL_LOCAL_FOLDER_TYPE, "CamelMaildirFolder",
- sizeof(CamelMaildirFolder),
- sizeof(CamelMaildirFolderClass),
- (CamelObjectClassInitFunc) camel_maildir_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_maildir_folder_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return camel_maildir_folder_type;
-}
-
CamelFolder *
camel_maildir_folder_new (CamelStore *parent_store,
const gchar *full_name,
d(printf("Creating maildir folder: %s\n", full_name));
- folder = (CamelFolder *)camel_object_new(CAMEL_MAILDIR_FOLDER_TYPE);
+ folder = g_object_new (CAMEL_TYPE_MAILDIR_FOLDER, NULL);
if (parent_store->flags & CAMEL_STORE_FILTER_INBOX
&& strcmp(full_name, ".") == 0)
*appended_uid = g_strdup(camel_message_info_uid(mi));
if (output_stream)
- camel_object_unref (output_stream);
+ g_object_unref (output_stream);
goto check_changed;
name, g_strerror (errno));
if (output_stream) {
- camel_object_unref (CAMEL_OBJECT (output_stream));
+ g_object_unref (CAMEL_OBJECT (output_stream));
unlink (name);
}
ex, (errno==EINTR) ?
CAMEL_EXCEPTION_USER_CANCEL : CAMEL_EXCEPTION_SYSTEM,
uid, lf->folder_path, _("Invalid message contents"));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
}
- camel_object_unref (message_stream);
+ g_object_unref (message_stream);
fail:
g_free (name);
#include "camel-local-folder.h"
-#define CAMEL_MAILDIR_FOLDER_TYPE (camel_maildir_folder_get_type ())
-#define CAMEL_MAILDIR_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MAILDIR_FOLDER_TYPE, CamelMaildirFolder))
-#define CAMEL_MAILDIR_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MAILDIR_FOLDER_TYPE, CamelMaildirFolderClass))
-#define CAMEL_IS_MAILDIR_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_MAILDIR_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MAILDIR_FOLDER \
+ (camel_maildir_folder_get_type ())
+#define CAMEL_MAILDIR_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MAILDIR_FOLDER, CamelMaildirFolder))
+#define CAMEL_MAILDIR_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MAILDIR_FOLDER, CamelMaildirFolderClass))
+#define CAMEL_IS_MAILDIR_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MAILDIR_FOLDER))
+#define CAMEL_IS_MAILDIR_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MAILDIR_FOLDER))
+#define CAMEL_MAILDIR_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MAILDIR_FOLDER, CamelMaildirFolderClass))
G_BEGIN_DECLS
/* public methods */
CamelFolder *camel_maildir_folder_new(CamelStore *parent_store, const gchar *full_name, guint32 flags, CamelException *ex);
-CamelType camel_maildir_folder_get_type(void);
+GType camel_maildir_folder_get_type(void);
G_END_DECLS
#define d(x)
-static gpointer camel_maildir_store_parent_class;
-
static CamelFolder *get_folder(CamelStore * store, const gchar *folder_name, guint32 flags, CamelException * ex);
static CamelFolder *get_inbox (CamelStore *store, CamelException *ex);
static gboolean delete_folder(CamelStore * store, const gchar *folder_name, CamelException * ex);
static gboolean maildir_compare_folder_name(gconstpointer a, gconstpointer b);
static guint maildir_hash_folder_name(gconstpointer a);
+G_DEFINE_TYPE (CamelMaildirStore, camel_maildir_store, CAMEL_TYPE_LOCAL_STORE)
+
static void
camel_maildir_store_class_init (CamelMaildirStoreClass *class)
{
CamelStoreClass *store_class;
- camel_maildir_store_parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
-
store_class = CAMEL_STORE_CLASS (class);
store_class->hash_folder_name = maildir_hash_folder_name;
store_class->compare_folder_name = maildir_compare_folder_name;
store_class->free_folder_info = camel_store_free_folder_info_full;
}
-CamelType
-camel_maildir_store_get_type(void)
+static void
+camel_maildir_store_init (CamelMaildirStore *maildir_store)
{
- static CamelType camel_maildir_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_maildir_store_type == CAMEL_INVALID_TYPE) {
- camel_maildir_store_type = camel_type_register(CAMEL_LOCAL_STORE_TYPE, "CamelMaildirStore",
- sizeof(CamelMaildirStore),
- sizeof(CamelMaildirStoreClass),
- (CamelObjectClassInitFunc) camel_maildir_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_maildir_store_type;
}
/* This fixes up some historical cruft of names starting with "./" */
camel_folder_refresh_info(folder, NULL);
fi->unread = camel_folder_get_unread_message_count(folder);
fi->total = camel_folder_get_message_count(folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
} else {
gchar *path, *folderpath;
CamelFolderSummary *s;
fi->unread = s->unread_count;
fi->total = s->saved_count;
}
- camel_object_unref (s);
+ g_object_unref (s);
g_free(folderpath);
g_free(path);
}
#include "camel-local-store.h"
-#define CAMEL_MAILDIR_STORE_TYPE (camel_maildir_store_get_type ())
-#define CAMEL_MAILDIR_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MAILDIR_STORE_TYPE, CamelMaildirStore))
-#define CAMEL_MAILDIR_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MAILDIR_STORE_TYPE, CamelMaildirStoreClass))
-#define CAMEL_IS_MAILDIR_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MAILDIR_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MAILDIR_STORE \
+ (camel_maildir_store_get_type ())
+#define CAMEL_MAILDIR_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MAILDIR_STORE, CamelMaildirStore))
+#define CAMEL_MAILDIR_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MAILDIR_STORE, CamelMaildirStoreClass))
+#define CAMEL_IS_MAILDIR_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MAILDIR_STORE))
+#define CAMEL_IS_MAILDIR_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MAILDIR_STORE))
+#define CAMEL_MAILDIR_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MAILDIR_STORE, CamelMaildirStoreClass))
G_BEGIN_DECLS
CamelLocalStoreClass parent_class;
};
-CamelType camel_maildir_store_get_type(void);
+GType camel_maildir_store_get_type(void);
G_END_DECLS
#define CAMEL_MAILDIR_SUMMARY_VERSION (0x2000)
+#define CAMEL_MAILDIR_SUMMARY_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MAILDIR_SUMMARY, CamelMaildirSummaryPrivate))
+
static CamelMessageInfo *message_info_load(CamelFolderSummary *s, FILE *in);
static CamelMessageInfo *message_info_new_from_header(CamelFolderSummary *, struct _camel_header_raw *);
static void message_info_free(CamelFolderSummary *, CamelMessageInfo *mi);
GMutex *summary_lock;
};
-static gpointer camel_maildir_summary_parent_class;
+G_DEFINE_TYPE (CamelMaildirSummary, camel_maildir_summary, CAMEL_TYPE_LOCAL_SUMMARY)
static void
-maildir_summary_finalize (CamelMaildirSummary *summary)
+maildir_summary_finalize (GObject *object)
{
- g_free (summary->priv->hostname);
- g_mutex_free (summary->priv->summary_lock);
- g_free (summary->priv);
+ CamelMaildirSummaryPrivate *priv;
+
+ priv = CAMEL_MAILDIR_SUMMARY_GET_PRIVATE (object);
+
+ g_free (priv->hostname);
+ g_mutex_free (priv->summary_lock);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_maildir_summary_parent_class)->finalize (object);
}
static void
camel_maildir_summary_class_init (CamelMaildirSummaryClass *class)
{
+ GObjectClass *object_class;
CamelFolderSummaryClass *folder_summary_class;
CamelLocalSummaryClass *local_summary_class;
- camel_maildir_summary_parent_class = (CamelLocalSummaryClass *)camel_type_get_global_classfuncs(camel_local_summary_get_type ());
+ g_type_class_add_private (class, sizeof (CamelMaildirSummaryPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = maildir_summary_finalize;
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->message_info_size = sizeof (CamelMaildirMessageInfo);
folder_summary = CAMEL_FOLDER_SUMMARY (maildir_summary);
- maildir_summary->priv = g_new0 (CamelMaildirSummaryPrivate, 1);
+ maildir_summary->priv =
+ CAMEL_MAILDIR_SUMMARY_GET_PRIVATE (maildir_summary);
/* set unique file version */
folder_summary->version += CAMEL_MAILDIR_SUMMARY_VERSION;
maildir_summary->priv->summary_lock = g_mutex_new ();
}
-CamelType
-camel_maildir_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_local_summary_get_type (), "CamelMaildirSummary",
- sizeof(CamelMaildirSummary),
- sizeof(CamelMaildirSummaryClass),
- (CamelObjectClassInitFunc)camel_maildir_summary_class_init,
- NULL,
- (CamelObjectInitFunc)camel_maildir_summary_init,
- (CamelObjectFinalizeFunc)maildir_summary_finalize);
- }
-
- return type;
-}
-
/**
* camel_maildir_summary_new:
* @folder: parent folder.
{
CamelMaildirSummary *o;
- o = (CamelMaildirSummary *)camel_object_new(camel_maildir_summary_get_type ());
+ o = g_object_new (CAMEL_TYPE_MAILDIR_SUMMARY, NULL);
((CamelFolderSummary *)o)->folder = folder;
if (folder) {
camel_db_set_collate (folder->parent_store->cdb_r, "dreceived", NULL, NULL);
}
maildirs->priv->current_file = (gchar *)name;
camel_folder_summary_add_from_parser((CamelFolderSummary *)maildirs, mp);
- camel_object_unref (mp);
+ g_object_unref (mp);
maildirs->priv->current_file = NULL;
camel_folder_summary_set_index((CamelFolderSummary *)maildirs, NULL);
g_free(filename);
#include "camel-local-summary.h"
-#define CAMEL_MAILDIR_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_maildir_summary_get_type (), CamelMaildirSummary)
-#define CAMEL_MAILDIR_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_maildir_summary_get_type (), CamelMaildirSummaryClass)
-#define CAMEL_IS_MAILDIR_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_maildir_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MAILDIR_SUMMARY \
+ (camel_maildir_summary_get_type ())
+#define CAMEL_MAILDIR_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MAILDIR_SUMMARY, CamelMaildirSummary))
+#define CAMEL_MAILDIR_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MAILDIR_SUMMARY, CamelMaildirSummaryClass))
+#define CAMEL_IS_MAILDIR_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MAILDIR_SUMMARY))
+#define CAMEL_IS_MAILDIR_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MAILDIR_SUMMARY))
+#define CAMEL_MAILDIR_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MAILDIR_SUMMARY, CamelMaildirSummaryClass))
G_BEGIN_DECLS
CamelLocalSummaryClass parent_class;
};
-CamelType camel_maildir_summary_get_type (void);
+GType camel_maildir_summary_get_type (void);
CamelMaildirSummary *camel_maildir_summary_new (struct _CamelFolder *folder, const gchar *filename, const gchar *maildirdir, CamelIndex *index);
/* convert some info->flags to/from the messageinfo */
#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-static gpointer camel_mbox_folder_parent_class;
-
static gint mbox_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex);
static void mbox_unlock(CamelLocalFolder *lf);
static gint mbox_cmp_uids (CamelFolder *folder, const gchar *uid1, const gchar *uid2);
static void mbox_sort_uids (CamelFolder *folder, GPtrArray *uids);
+G_DEFINE_TYPE (CamelMboxFolder, camel_mbox_folder, CAMEL_TYPE_LOCAL_FOLDER)
+
static void
camel_mbox_folder_class_init (CamelMboxFolderClass *class)
{
CamelFolderClass *folder_class;
CamelLocalFolderClass *local_folder_class;
- camel_mbox_folder_parent_class = (CamelLocalFolderClass *)camel_type_get_global_classfuncs(camel_local_folder_get_type());
-
folder_class = CAMEL_FOLDER_CLASS (class);
folder_class->append_message = mbox_append_message;
folder_class->get_message = mbox_get_message;
mbox_folder->lockfd = -1;
}
-CamelType
-camel_mbox_folder_get_type(void)
-{
- static CamelType camel_mbox_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_mbox_folder_type == CAMEL_INVALID_TYPE) {
- camel_mbox_folder_type = camel_type_register(CAMEL_LOCAL_FOLDER_TYPE, "CamelMboxFolder",
- sizeof(CamelMboxFolder),
- sizeof(CamelMboxFolderClass),
- (CamelObjectClassInitFunc) camel_mbox_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mbox_folder_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return camel_mbox_folder_type;
-}
-
CamelFolder *
camel_mbox_folder_new(CamelStore *parent_store, const gchar *full_name, guint32 flags, CamelException *ex)
{
d(printf("Creating mbox folder: %s in %s\n", full_name, camel_local_store_get_toplevel_dir((CamelLocalStore *)parent_store)));
- folder = (CamelFolder *)camel_object_new(CAMEL_MBOX_FOLDER_TYPE);
+ folder = g_object_new (CAMEL_TYPE_MBOX_FOLDER, NULL);
folder = (CamelFolder *)camel_local_folder_construct((CamelLocalFolder *)folder,
parent_store, full_name, flags, ex);
filter_stream = camel_stream_filter_new (output_stream);
filter_from = camel_mime_filter_from_new();
camel_stream_filter_add((CamelStreamFilter *) filter_stream, filter_from);
- camel_object_unref (filter_from);
+ g_object_unref (filter_from);
if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *) message, filter_stream) == -1 ||
camel_stream_write (filter_stream, "\n", 1) == -1 ||
goto fail_write;
/* filter stream ref's the output stream itself, so we need to unref it too */
- camel_object_unref (filter_stream);
- camel_object_unref (output_stream);
+ g_object_unref (filter_stream);
+ g_object_unref (output_stream);
g_free(fromline);
if (!((CamelMessageInfoBase *)mi)->preview && camel_folder_summary_get_need_preview(folder->summary)) {
retval = ftruncate (fd, mbs->folder_size);
} while (retval == -1 && errno == EINTR);
- camel_object_unref (output_stream);
+ g_object_unref (output_stream);
}
if (filter_stream)
- camel_object_unref (filter_stream);
+ g_object_unref (filter_stream);
g_free(fromline);
(glong)camel_mime_parser_tell_start_from(parser),
camel_mime_parser_state(parser));
- camel_object_unref (parser);
+ g_object_unref (parser);
parser = NULL;
if (!retried) {
CAMEL_EXCEPTION_USER_CANCEL : CAMEL_EXCEPTION_SYSTEM,
uid, lf->folder_path,
_("Message construction failed."));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
goto fail;
}
camel_local_folder_unlock(lf);
if (parser)
- camel_object_unref (parser);
+ g_object_unref (parser);
/* use the opportunity to notify of changes (particularly if we had a rebuild) */
if (camel_folder_change_info_changed(lf->changes)) {
#include "camel-local-folder.h"
#include "camel-mbox-summary.h"
-#define CAMEL_MBOX_FOLDER_TYPE (camel_mbox_folder_get_type ())
-#define CAMEL_MBOX_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MBOX_FOLDER_TYPE, CamelMboxFolder))
-#define CAMEL_MBOX_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MBOX_FOLDER_TYPE, CamelMboxFolderClass))
-#define CAMEL_IS_MBOX_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_MBOX_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MBOX_FOLDER \
+ (camel_mbox_folder_get_type ())
+#define CAMEL_MBOX_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MBOX_FOLDER, CamelMboxFolder))
+#define CAMEL_MBOX_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MBOX_FOLDER, CamelMboxFolderClass))
+#define CAMEL_IS_MBOX_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MBOX_FOLDER))
+#define CAMEL_IS_MBOX_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MBOX_FOLDER))
+#define CAMEL_MBOX_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MBOX_FOLDER, CamelMboxFolderClass))
G_BEGIN_DECLS
/* flags are taken from CAMEL_STORE_FOLDER_* flags */
CamelFolder *camel_mbox_folder_new(CamelStore *parent_store, const gchar *full_name, guint32 flags, CamelException *ex);
-CamelType camel_mbox_folder_get_type(void);
+GType camel_mbox_folder_get_type(void);
G_END_DECLS
#define d(x)
-static gpointer camel_mbox_store_parent_class;
-
static CamelFolder *get_folder(CamelStore *store, const gchar *folder_name, guint32 flags, CamelException *ex);
static gboolean delete_folder(CamelStore *store, const gchar *folder_name, CamelException *ex);
static gboolean rename_folder(CamelStore *store, const gchar *old, const gchar *new, CamelException *ex);
static gchar *mbox_get_meta_path(CamelLocalStore *ls, const gchar *full_name, const gchar *ext);
static gchar *mbox_get_full_path(CamelLocalStore *ls, const gchar *full_name);
+G_DEFINE_TYPE (CamelMboxStore, camel_mbox_store, CAMEL_TYPE_LOCAL_STORE)
+
static void
camel_mbox_store_class_init (CamelMboxStoreClass *class)
{
CamelStoreClass *store_class;
CamelLocalStoreClass *local_store_class;
- camel_mbox_store_parent_class =(CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
-
store_class = CAMEL_STORE_CLASS (class);
store_class->get_folder = get_folder;
store_class->delete_folder = delete_folder;
local_store_class->get_meta_path = mbox_get_meta_path;
}
-CamelType
-camel_mbox_store_get_type(void)
+static void
+camel_mbox_store_init (CamelMboxStore *mbox_store)
{
- static CamelType camel_mbox_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_mbox_store_type == CAMEL_INVALID_TYPE) {
- camel_mbox_store_type = camel_type_register(CAMEL_LOCAL_STORE_TYPE, "CamelMboxStore",
- sizeof(CamelMboxStore),
- sizeof(CamelMboxStoreClass),
- (CamelObjectClassInitFunc) camel_mbox_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_mbox_store_type;
}
static const gchar *extensions[] = {
if ((lf = camel_store_get_folder(store, folder_name, 0, &lex))) {
camel_object_get(lf, NULL, CAMEL_OBJECT_STATE_FILE, &path, NULL);
camel_object_set(lf, NULL, CAMEL_OBJECT_STATE_FILE, NULL, NULL);
- camel_object_unref (lf);
+ g_object_unref (lf);
} else {
camel_exception_clear(&lex);
}
folder = CAMEL_STORE_GET_CLASS (store)->get_folder (
store, name, CAMEL_STORE_FOLDER_CREATE, ex);
if (folder) {
- camel_object_unref (folder);
+ g_object_unref (folder);
info = CAMEL_STORE_GET_CLASS (store)->get_folder_info (
store, name, 0, ex);
}
g_free(newibex);
if (folder)
- camel_object_unref (folder);
+ g_object_unref (folder);
return TRUE;
g_free(oldibex);
if (folder)
- camel_object_unref (folder);
+ g_object_unref (folder);
return FALSE;
}
camel_folder_refresh_info(folder, NULL);
fi->unread = camel_folder_get_unread_message_count(folder);
fi->total = camel_folder_get_message_count(folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
} else {
gchar *path, *folderpath;
CamelMboxSummary *mbs;
fi->total = ((CamelFolderSummary *)mbs)->saved_count;
}
- camel_object_unref (mbs);
+ g_object_unref (mbs);
g_free(folderpath);
g_free(path);
}
#include "camel-local-store.h"
-#define CAMEL_MBOX_STORE_TYPE (camel_mbox_store_get_type ())
-#define CAMEL_MBOX_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MBOX_STORE_TYPE, CamelMboxStore))
-#define CAMEL_MBOX_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MBOX_STORE_TYPE, CamelMboxStoreClass))
-#define CAMEL_IS_MBOX_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MBOX_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MBOX_STORE \
+ (camel_mbox_store_get_type ())
+#define CAMEL_MBOX_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MBOX_STORE, CamelMboxStore))
+#define CAMEL_MBOX_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MBOX_STORE, CamelMboxStoreClass))
+#define CAMEL_IS_MBOX_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MBOX_STORE))
+#define CAMEL_IS_MBOX_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MBOX_STORE))
+#define CAMEL_MBOX_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MBOX_STORE, CamelMboxStoreClass))
G_BEGIN_DECLS
CamelLocalStoreClass parent_class;
};
-CamelType camel_mbox_store_get_type (void);
+GType camel_mbox_store_get_type (void);
G_END_DECLS
static guint32 decode_status(const gchar *status);
#endif
-static gpointer camel_mbox_summary_parent_class;
+G_DEFINE_TYPE (CamelMboxSummary, camel_mbox_summary, CAMEL_TYPE_LOCAL_SUMMARY)
static gboolean
mbox_info_set_user_flag(CamelMessageInfo *mi, const gchar *name, gboolean value)
CamelFolderSummaryClass *folder_summary_class;
CamelLocalSummaryClass *local_summary_class;
- camel_mbox_summary_parent_class = (CamelLocalSummaryClass *)camel_type_get_global_classfuncs(camel_local_summary_get_type());
-
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->message_info_size = sizeof (CamelMboxMessageInfo);
folder_summary_class->content_info_size = sizeof (CamelMboxMessageContentInfo);
folder_summary->version += CAMEL_MBOX_SUMMARY_VERSION;
}
-CamelType
-camel_mbox_summary_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_local_summary_get_type(), "CamelMboxSummary",
- sizeof (CamelMboxSummary),
- sizeof (CamelMboxSummaryClass),
- (CamelObjectClassInitFunc) camel_mbox_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mbox_summary_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
/**
* camel_mbox_summary_new:
*
{
CamelMboxSummary *new;
- new = (CamelMboxSummary *)camel_object_new(camel_mbox_summary_get_type());
+ new = g_object_new (CAMEL_TYPE_MBOX_SUMMARY, NULL);
((CamelFolderSummary *)new)->folder = folder;
if (folder) {
CamelFolderSummary *summary = (CamelFolderSummary *)new;
g_assert(camel_mime_parser_step(mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM_END);
}
- camel_object_unref (CAMEL_OBJECT (mp));
+ g_object_unref (CAMEL_OBJECT (mp));
count = camel_folder_summary_count(s);
for (i=0;i<count;i++) {
g_ptr_array_foreach (summary, (GFunc) camel_pstring_free, NULL);
g_ptr_array_free (summary, TRUE);
- camel_object_unref (mp);
+ g_object_unref (mp);
camel_operation_end(NULL);
if (fd != -1)
close(fd);
if (mp)
- camel_object_unref (mp);
+ g_object_unref (mp);
if (info)
camel_message_info_free((CamelMessageInfo *)info);
write(fdout, "\n", 1);
#endif
- camel_object_unref (mp);
+ g_object_unref (mp);
/* clear working flags */
for (i=0; i<count; i++) {
g_free(xevnew);
if (mp)
- camel_object_unref (mp);
+ g_object_unref (mp);
if (info)
camel_message_info_free((CamelMessageInfo *)info);
/* Enable the use of elm/pine style "Status" & "X-Status" headers */
#define STATUS_PINE
-#define CAMEL_MBOX_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_mbox_summary_get_type (), CamelMboxSummary)
-#define CAMEL_MBOX_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mbox_summary_get_type (), CamelMboxSummaryClass)
-#define CAMEL_IS_MBOX_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_mbox_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MBOX_SUMMARY \
+ (camel_mbox_summary_get_type ())
+#define CAMEL_MBOX_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MBOX_SUMMARY, CamelMboxSummary))
+#define CAMEL_MBOX_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MBOX_SUMMARY, CamelMboxSummaryClass))
+#define CAMEL_IS_MBOX_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MBOX_SUMMARY))
+#define CAMEL_IS_MBOX_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MBOX_SUMMARY))
#define CAMEL_MBOX_SUMMARY_GET_CLASS(obj) \
- ((CamelMboxSummaryClass *) CAMEL_OBJECT_GET_CLASS (obj))
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MBOX_SUMMARY, CamelMboxSummaryClass))
G_BEGIN_DECLS
gint (*sync_full)(CamelMboxSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
};
-CamelType camel_mbox_summary_get_type (void);
+GType camel_mbox_summary_get_type (void);
CamelMboxSummary *camel_mbox_summary_new (struct _CamelFolder *, const gchar *filename, const gchar *mbox_name, CamelIndex *index);
/* do we honour/use xstatus headers, etc */
#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-static CamelLocalFolderClass *parent_class = NULL;
-
static CamelLocalSummary *mh_create_summary(CamelLocalFolder *lf, const gchar *path, const gchar *folder, CamelIndex *index);
static gboolean mh_append_message(CamelFolder * folder, CamelMimeMessage * message, const CamelMessageInfo *info, gchar **appended_uid, CamelException * ex);
static CamelMimeMessage *mh_get_message(CamelFolder * folder, const gchar * uid, CamelException * ex);
static gchar * mh_get_filename (CamelFolder *folder, const gchar *uid, CamelException *ex);
+G_DEFINE_TYPE (CamelMhFolder, camel_mh_folder, CAMEL_TYPE_LOCAL_FOLDER)
+
static void
camel_mh_folder_class_init (CamelMhFolderClass *class)
{
CamelFolderClass *folder_class;
CamelLocalFolderClass *local_folder_class;
- parent_class = CAMEL_LOCAL_FOLDER_CLASS (camel_type_get_global_classfuncs(camel_local_folder_get_type()));
-
folder_class = CAMEL_FOLDER_CLASS (class);
folder_class->append_message = mh_append_message;
folder_class->get_message = mh_get_message;
{
}
-CamelType
-camel_mh_folder_get_type(void)
-{
- static CamelType camel_mh_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_mh_folder_type == CAMEL_INVALID_TYPE) {
- camel_mh_folder_type = camel_type_register(CAMEL_LOCAL_FOLDER_TYPE, "CamelMhFolder",
- sizeof(CamelMhFolder),
- sizeof(CamelMhFolderClass),
- (CamelObjectClassInitFunc) camel_mh_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mh_folder_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return camel_mh_folder_type;
-}
-
CamelFolder *
camel_mh_folder_new (CamelStore *parent_store,
const gchar *full_name,
d(printf("Creating mh folder: %s\n", full_name));
- folder = (CamelFolder *)camel_object_new(CAMEL_MH_FOLDER_TYPE);
+ folder = g_object_new (CAMEL_TYPE_MH_FOLDER, NULL);
folder = (CamelFolder *) camel_local_folder_construct (
CAMEL_LOCAL_FOLDER (folder),
parent_store, full_name, flags, ex);
goto fail_write;
/* close this? */
- camel_object_unref (CAMEL_OBJECT (output_stream));
+ g_object_unref (CAMEL_OBJECT (output_stream));
g_free(name);
name, g_strerror (errno));
if (output_stream) {
- camel_object_unref (CAMEL_OBJECT (output_stream));
+ g_object_unref (CAMEL_OBJECT (output_stream));
unlink (name);
}
ex, CAMEL_EXCEPTION_SYSTEM,
name, lf->folder_path,
_("Message construction failed."));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
}
- camel_object_unref (message_stream);
+ g_object_unref (message_stream);
fail:
g_free (name);
#include "camel-local-folder.h"
-#define CAMEL_MH_FOLDER_TYPE (camel_mh_folder_get_type ())
-#define CAMEL_MH_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MH_FOLDER_TYPE, CamelMhFolder))
-#define CAMEL_MH_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MH_FOLDER_TYPE, CamelMhFolderClass))
-#define CAMEL_IS_MH_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_MH_FOLDER_TYPE))
+#define CAMEL_TYPE_MH_FOLDER \
+ (camel_mh_folder_get_type ())
+#define CAMEL_MH_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MH_FOLDER, CamelMhFolder))
+#define CAMEL_MH_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MH_FOLDER, CamelMhFolderClass))
+#define CAMEL_IS_MH_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MH_FOLDER))
+#define CAMEL_IS_MH_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MH_FOLDER))
+#define CAMEL_MH_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MH_FOLDER, CamelMhFolderClass))
G_BEGIN_DECLS
/* public methods */
CamelFolder *camel_mh_folder_new(CamelStore *parent_store, const gchar *full_name, guint32 flags, CamelException *ex);
-CamelType camel_mh_folder_get_type(void);
+GType camel_mh_folder_get_type(void);
G_END_DECLS
#include "camel-mh-store.h"
#include "camel-mh-summary.h"
-static gpointer camel_mh_store_parent_class;
-
#define d(x)
static gboolean construct (CamelService *service, CamelSession *session, CamelProvider *provider, CamelURL *url, CamelException *ex);
static gboolean rename_folder(CamelStore *store, const gchar *old, const gchar *new, CamelException *ex);
static CamelFolderInfo * get_folder_info (CamelStore *store, const gchar *top, guint32 flags, CamelException *ex);
+G_DEFINE_TYPE (CamelMhStore, camel_mh_store, CAMEL_TYPE_LOCAL_STORE)
+
static void
-camel_mh_store_class_init (CamelObjectClass *class)
+camel_mh_store_class_init (CamelMhStoreClass *class)
{
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_mh_store_parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
-
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = construct;
store_class->get_folder_info = get_folder_info;
}
-CamelType
-camel_mh_store_get_type(void)
+static void
+camel_mh_store_init (CamelMhStore *mh_store)
{
- static CamelType camel_mh_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_mh_store_type == CAMEL_INVALID_TYPE) {
- camel_mh_store_type = camel_type_register(CAMEL_LOCAL_STORE_TYPE, "CamelMhStore",
- sizeof(CamelMhStore),
- sizeof(CamelMhStoreClass),
- (CamelObjectClassInitFunc) camel_mh_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_mh_store_type;
}
static gboolean
stream = camel_stream_fs_new_with_name (tmp, O_RDONLY, 0);
if (stream) {
in = camel_stream_buffer_new(stream, CAMEL_STREAM_BUFFER_READ);
- camel_object_unref (stream);
+ g_object_unref (stream);
}
if (in == NULL || stream == NULL) {
if (mode == UPDATE_ADD && camel_stream_printf (out, "%s\n", folder) == -1)
unlink(tmpnew); /* remove it if its there */
g_free(line);
if (in)
- camel_object_unref (in);
+ g_object_unref (in);
if (out)
- camel_object_unref (out);
+ g_object_unref (out);
}
static CamelFolder *
camel_folder_refresh_info(folder, NULL);
fi->unread = camel_folder_get_unread_message_count(folder);
fi->total = camel_folder_get_message_count(folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
} else {
gchar *path, *folderpath;
CamelFolderSummary *s;
fi->unread = s->unread_count;
fi->total = s->saved_count;
}
- camel_object_unref (s);
+ g_object_unref (s);
g_free(folderpath);
g_free(path);
}
return;
in = camel_stream_buffer_new(stream, CAMEL_STREAM_BUFFER_READ);
- camel_object_unref (stream);
+ g_object_unref (stream);
if (in == NULL)
return;
g_hash_table_foreach(visited, (GHFunc)g_free, NULL);
g_hash_table_destroy(visited);
- camel_object_unref (in);
+ g_object_unref (in);
}
/* FIXME: move to camel-local, this is shared with maildir code */
#include "camel-local-store.h"
-#define CAMEL_MH_STORE_TYPE (camel_mh_store_get_type ())
-#define CAMEL_MH_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MH_STORE_TYPE, CamelMhStore))
-#define CAMEL_MH_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MH_STORE_TYPE, CamelMhStoreClass))
-#define CAMEL_IS_MH_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MH_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_MH_STORE \
+ (camel_mh_store_get_type ())
+#define CAMEL_MH_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MH_STORE, CamelMhStore))
+#define CAMEL_MH_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MH_STORE, CamelMhStoreClass))
+#define CAMEL_IS_MH_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MH_STORE))
+#define CAMEL_IS_MH_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MH_STORE))
+#define CAMEL_MH_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MH_STORE, CamelMhStoreClass))
G_BEGIN_DECLS
CamelLocalStoreClass parent_class;
};
-CamelType camel_mh_store_get_type(void);
+GType camel_mh_store_get_type (void);
G_END_DECLS
#define CAMEL_MH_SUMMARY_VERSION (0x2000)
+#define CAMEL_MH_SUMMARY_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_MH_SUMMARY, CamelMhSummaryPrivate))
+
static gint mh_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex);
static gint mh_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
/*static gint mh_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);*/
gchar *current_uid;
};
-static gpointer camel_mh_summary_parent_class;
-
-static void
-mh_summary_finalize (CamelMhSummary *mh_summary)
-{
- g_free (mh_summary->priv);
-}
+G_DEFINE_TYPE (CamelMhSummary, camel_mh_summary, CAMEL_TYPE_LOCAL_SUMMARY)
static void
camel_mh_summary_class_init (CamelMhSummaryClass *class)
CamelFolderSummaryClass *folder_summary_class;
CamelLocalSummaryClass *local_summary_class;
- camel_mh_summary_parent_class = (CamelLocalSummaryClass *)camel_type_get_global_classfuncs(camel_local_summary_get_type ());
+ g_type_class_add_private (class, sizeof (CamelMhSummaryPrivate));
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->next_uid_string = mh_summary_next_uid_string;
{
CamelFolderSummary *folder_summary;
- mh_summary->priv = g_new0 (CamelMhSummaryPrivate, 1);
+ mh_summary->priv = CAMEL_MH_SUMMARY_GET_PRIVATE (mh_summary);
folder_summary = CAMEL_FOLDER_SUMMARY (mh_summary);
folder_summary->version += CAMEL_MH_SUMMARY_VERSION;
}
-CamelType
-camel_mh_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_local_summary_get_type (), "CamelMhSummary",
- sizeof(CamelMhSummary),
- sizeof(CamelMhSummaryClass),
- (CamelObjectClassInitFunc)camel_mh_summary_class_init,
- NULL,
- (CamelObjectInitFunc)camel_mh_summary_init,
- (CamelObjectFinalizeFunc)mh_summary_finalize);
- }
-
- return type;
-}
-
/**
* camel_mh_summary_new:
*
{
CamelMhSummary *o;
- o = (CamelMhSummary *)camel_object_new(camel_mh_summary_get_type ());
+ o = g_object_new (CAMEL_TYPE_MH_SUMMARY, NULL);
((CamelFolderSummary *)o)->folder = folder;
if (folder) {
camel_db_set_collate (folder->parent_store->cdb_r, "uid", "mh_uid_sort", (CamelDBCollate)camel_local_frompos_sort);
}
mhs->priv->current_uid = (gchar *)name;
camel_folder_summary_add_from_parser((CamelFolderSummary *)mhs, mp);
- camel_object_unref (mp);
+ g_object_unref (mp);
mhs->priv->current_uid = NULL;
camel_folder_summary_set_index((CamelFolderSummary *)mhs, NULL);
g_free(filename);
#include "camel-local-summary.h"
-#define CAMEL_MH_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_mh_summary_get_type (), CamelMhSummary)
-#define CAMEL_MH_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mh_summary_get_type (), CamelMhSummaryClass)
-#define CAMEL_IS_MH_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_mh_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_MH_SUMMARY \
+ (camel_mh_summary_get_type ())
+#define CAMEL_MH_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_MH_SUMMARY, CamelMhSummary))
+#define CAMEL_MH_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_MH_SUMMARY, CamelMhSummaryClass))
+#define CAMEL_IS_MH_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_MH_SUMMARY))
+#define CAMEL_IS_MH_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_MH_SUMMARY))
+#define CAMEL_MH_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_MH_SUMMARY, CamelMhSummaryClass))
G_BEGIN_DECLS
CamelLocalSummaryClass parent_class;
};
-CamelType camel_mh_summary_get_type (void);
+GType camel_mh_summary_get_type (void);
CamelMhSummary *camel_mh_summary_new(struct _CamelFolder *, const gchar *filename, const gchar *mhdir, CamelIndex *index);
G_END_DECLS
#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-static CamelFolderClass *parent_class = NULL;
-
static CamelLocalSummary *spool_create_summary(CamelLocalFolder *lf, const gchar *path, const gchar *folder, CamelIndex *index);
static gint spool_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex);
static void spool_unlock(CamelLocalFolder *lf);
+G_DEFINE_TYPE (CamelSpoolFolder, camel_spool_folder, CAMEL_TYPE_MBOX_FOLDER)
+
static void
camel_spool_folder_class_init (CamelSpoolFolderClass *class)
{
CamelLocalFolderClass *local_folder_class;
- parent_class = (CamelFolderClass *)camel_mbox_folder_get_type();
-
local_folder_class = CAMEL_LOCAL_FOLDER_CLASS (class);
local_folder_class->create_summary = spool_create_summary;
local_folder_class->lock = spool_lock;
spool_folder->lockid = -1;
}
-CamelType
-camel_spool_folder_get_type (void)
-{
- static CamelType camel_spool_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_spool_folder_type == CAMEL_INVALID_TYPE) {
- camel_spool_folder_type = camel_type_register(camel_mbox_folder_get_type(), "CamelSpoolFolder",
- sizeof(CamelSpoolFolder),
- sizeof(CamelSpoolFolderClass),
- (CamelObjectClassInitFunc) camel_spool_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_spool_folder_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return camel_spool_folder_type;
-}
-
CamelFolder *
camel_spool_folder_new (CamelStore *parent_store,
const gchar *full_name,
d(printf("Creating spool folder: %s in %s\n", full_name, camel_local_store_get_toplevel_dir((CamelLocalStore *)parent_store)));
- folder = (CamelFolder *)camel_object_new(CAMEL_SPOOL_FOLDER_TYPE);
+ folder = g_object_new (CAMEL_TYPE_SPOOL_FOLDER, NULL);
if (parent_store->flags & CAMEL_STORE_FILTER_INBOX
&& strcmp(full_name, "INBOX") == 0)
#include "camel-mbox-folder.h"
#include "camel-spool-summary.h"
-#define CAMEL_SPOOL_FOLDER_TYPE (camel_spool_folder_get_type ())
-#define CAMEL_SPOOL_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SPOOL_FOLDER_TYPE, CamelSpoolFolder))
-#define CAMEL_SPOOL_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SPOOL_FOLDER_TYPE, CamelSpoolFolderClass))
-#define CAMEL_IS_SPOOL_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_SPOOL_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SPOOL_FOLDER \
+ (camel_spool_folder_get_type ())
+#define CAMEL_SPOOL_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SPOOL_FOLDER, CamelSpoolFolder))
+#define CAMEL_SPOOL_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SPOOL_FOLDER, CamelSpoolFolderClass))
+#define CAMEL_IS_SPOOL_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SPOOL_FOLDER))
+#define CAMEL_IS_SPOOL_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SPOOL_FOLDER))
+#define CAMEL_SPOOL_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SPOOL_FOLDER, CamelSpoolFolderClass))
G_BEGIN_DECLS
CamelMboxFolderClass parent_class;
};
-CamelType camel_spool_folder_get_type(void);
+GType camel_spool_folder_get_type(void);
CamelFolder *camel_spool_folder_new(CamelStore *parent_store, const gchar *full_name, guint32 flags, CamelException *ex);
static gchar *spool_get_meta_path(CamelLocalStore *ls, const gchar *full_name, const gchar *ext);
static gchar *spool_get_full_path(CamelLocalStore *ls, const gchar *full_name);
-static gpointer camel_spool_store_parent_class;
+G_DEFINE_TYPE (CamelSpoolStore, camel_spool_store, CAMEL_TYPE_MBOX_STORE)
static void
camel_spool_store_class_init (CamelSpoolStoreClass *class)
CamelStoreClass *store_class;
CamelLocalStoreClass *local_store_class;
- camel_spool_store_parent_class = CAMEL_STORE_CLASS(camel_mbox_store_get_type());
-
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = construct;
service_class->get_name = get_name;
local_store_class->get_meta_path = spool_get_meta_path;
}
-CamelType
-camel_spool_store_get_type (void)
+static void
+camel_spool_store_init (CamelSpoolStore *spool_store)
{
- static CamelType camel_spool_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_spool_store_type == CAMEL_INVALID_TYPE) {
- camel_spool_store_type = camel_type_register (camel_mbox_store_get_type(), "CamelSpoolStore",
- sizeof (CamelSpoolStore),
- sizeof (CamelSpoolStoreClass),
- (CamelObjectClassInitFunc) camel_spool_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_spool_store_type;
}
static gboolean
struct stat st;
d(printf("constructing store of type %s '%s:%s'\n",
- camel_type_to_name(((CamelObject *)service)->s.type), url->protocol, url->path));
+ G_OBJECT_CLASS_NAME(((CamelObject *)service)->s.type), url->protocol, url->path));
/* Chain up to parent's construct() method. */
service_class = CAMEL_SERVICE_CLASS (camel_spool_store_parent_class);
camel_folder_refresh_info(folder, NULL);
fi->unread = camel_folder_get_unread_message_count(folder);
fi->total = camel_folder_get_message_count(folder);
- camel_object_unref (folder);
+ g_object_unref (folder);
}
}
spool_fill_fi(store, fi, flags);
}
if (folder)
- camel_object_unref (folder);
+ g_object_unref (folder);
} else if (S_ISDIR(st.st_mode)) {
struct _inode in = { st.st_dev, st.st_ino };
#include "camel-mbox-store.h"
-#define CAMEL_SPOOL_STORE_TYPE (camel_spool_store_get_type ())
-#define CAMEL_SPOOL_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SPOOL_STORE_TYPE, CamelSpoolStore))
-#define CAMEL_SPOOL_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SPOOL_STORE_TYPE, CamelSpoolStoreClass))
-#define CAMEL_IS_SPOOL_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_SPOOL_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SPOOL_STORE \
+ (camel_spool_store_get_type ())
+#define CAMEL_SPOOL_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SPOOL_STORE, CamelSpoolStore))
+#define CAMEL_SPOOL_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SPOOL_STORE, CamelSpoolStoreClass))
+#define CAMEL_IS_SPOOL_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SPOOL_STORE))
+#define CAMEL_IS_SPOOL_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SPOOL_STORE))
+#define CAMEL_SPOOL_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SPOOL_STORE, CamelSpoolStoreClass))
G_BEGIN_DECLS
CamelMboxStoreClass parent_class;
};
-CamelType camel_spool_store_get_type (void);
+GType camel_spool_store_get_type (void);
G_END_DECLS
static gint spool_summary_sync_full(CamelMboxSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
static gint spool_summary_need_index(void);
-static gpointer camel_spool_summary_parent_class;
+G_DEFINE_TYPE (CamelSpoolSummary, camel_spool_summary, CAMEL_TYPE_MBOX_SUMMARY)
static void
camel_spool_summary_class_init (CamelSpoolSummaryClass *class)
CamelLocalSummaryClass *local_summary_class;
CamelMboxSummaryClass *mbox_summary_class;
- camel_spool_summary_parent_class = CAMEL_FOLDER_SUMMARY_CLASS(camel_mbox_summary_get_type());
-
local_summary_class = CAMEL_LOCAL_SUMMARY_CLASS (class);
local_summary_class->load = spool_summary_load;
local_summary_class->check = spool_summary_check;
folder_summary->version += CAMEL_SPOOL_SUMMARY_VERSION;
}
-CamelType
-camel_spool_summary_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_mbox_summary_get_type(), "CamelSpoolSummary",
- sizeof (CamelSpoolSummary),
- sizeof (CamelSpoolSummaryClass),
- (CamelObjectClassInitFunc) camel_spool_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_spool_summary_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
CamelSpoolSummary *
camel_spool_summary_new (CamelFolder *folder,
const gchar *mbox_name)
{
CamelSpoolSummary *new;
- new = (CamelSpoolSummary *)camel_object_new(camel_spool_summary_get_type());
+ new = g_object_new (CAMEL_TYPE_SPOOL_SUMMARY, NULL);
((CamelFolderSummary *)new)->folder = folder;
if (folder) {
camel_db_set_collate (folder->parent_store->cdb_r, "bdata", "spool_frompos_sort", (CamelDBCollate)camel_local_frompos_sort);
#include "camel-mbox-summary.h"
-#define CAMEL_SPOOL_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_spool_summary_get_type (), CamelSpoolSummary)
-#define CAMEL_SPOOL_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_spool_summary_get_type (), CamelSpoolSummaryClass)
-#define CAMEL_IS_SPOOL_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_spool_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_SPOOL_SUMMARY \
+ (camel_spool_summary_get_type ())
+#define CAMEL_SPOOL_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SPOOL_SUMMARY, CamelSpoolSummary))
+#define CAMEL_SPOOL_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SPOOL_SUMMARY, CamelSpoolSummaryClass))
+#define CAMEL_IS_SPOOL_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SPOOL_SUMMARY))
+#define CAMEL_IS_SPOOL_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SPOOL_SUMMARY))
+#define CAMEL_SPOOL_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SPOOL_SUMMARY, CamelSpoolSummaryClass))
G_BEGIN_DECLS
CamelMboxSummaryClass parent_class;
};
-CamelType camel_spool_summary_get_type (void);
+GType camel_spool_summary_get_type (void);
void camel_spool_summary_construct (CamelSpoolSummary *new, const gchar *filename, const gchar *spool_name, CamelIndex *index);
/* create the summary, in-memory only */
#include "camel-nntp-store.h"
#include "camel-nntp-summary.h"
-static CamelDiscoFolderClass *parent_class = NULL;
+#define CAMEL_NNTP_FOLDER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_NNTP_FOLDER, CamelNNTPFolderPrivate))
+
+G_DEFINE_TYPE (CamelNNTPFolder, camel_nntp_folder, CAMEL_TYPE_DISCO_FOLDER)
static void
-nntp_folder_finalize (CamelNNTPFolder *nntp_folder)
+nntp_folder_dispose (GObject *object)
{
- CamelException ex;
-
- camel_exception_init (&ex);
+ CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (object);
camel_folder_summary_save_to_db (
- CAMEL_FOLDER (nntp_folder)->summary, &ex);
+ CAMEL_FOLDER (nntp_folder)->summary, NULL);
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_nntp_folder_parent_class)->dispose (object);
+}
+
+static void
+nntp_folder_finalize (GObject *object)
+{
+ CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (object);
g_mutex_free (nntp_folder->priv->search_lock);
g_mutex_free (nntp_folder->priv->cache_lock);
- g_free (nntp_folder->priv);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_nntp_folder_parent_class)->finalize (object);
}
gboolean
gboolean success;
camel_service_lock (CAMEL_SERVICE (folder->parent_store), CS_REC_CONNECT_LOCK);
+
success = camel_folder_summary_save_to_db (folder->summary, ex);
+
camel_service_unlock (CAMEL_SERVICE (folder->parent_store), CS_REC_CONNECT_LOCK);
return success;
gboolean success;
camel_service_lock (CAMEL_SERVICE (folder->parent_store), CS_REC_CONNECT_LOCK);
+
success = camel_folder_summary_save_to_db (folder->summary, ex);
+
camel_service_unlock (CAMEL_SERVICE (folder->parent_store), CS_REC_CONNECT_LOCK);
return success;
if (camel_stream_reset (stream) == -1)
goto fail;
} else {
- stream = camel_object_ref (nntp_store->stream);
+ stream = g_object_ref (nntp_store->stream);
}
} else if (ret == 423 || ret == 430) {
camel_exception_setv (
stream = nntp_folder_download_message (
(CamelNNTPFolder *) disco_folder, article, msgid, ex);
if (stream)
- camel_object_unref (stream);
+ g_object_unref (stream);
else
success = FALSE;
ex, CAMEL_EXCEPTION_SYSTEM,
_("Cannot get message %s: %s"), uid,
g_strerror (errno));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
}
- camel_object_unref (stream);
+ g_object_unref (stream);
fail:
if (camel_folder_change_info_changed (nntp_folder->changes)) {
changes = nntp_folder->changes;
filtered_stream = camel_stream_filter_new (stream);
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filtered_stream), crlffilter);
- camel_object_unref (crlffilter);
+ g_object_unref (crlffilter);
/* remove mail 'To', 'CC', and 'BCC' headers */
savedhdrs = NULL;
success = FALSE;
}
- camel_object_unref (filtered_stream);
+ g_object_unref (filtered_stream);
g_free(group);
header->next = savedhdrs;
static void
camel_nntp_folder_class_init (CamelNNTPFolderClass *class)
{
+ GObjectClass *object_class;
CamelFolderClass *folder_class;
CamelDiscoFolderClass *disco_folder_class;
- parent_class = CAMEL_DISCO_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_disco_folder_get_type ()));
- folder_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelNNTPFolderPrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = nntp_folder_dispose;
+ object_class->finalize = nntp_folder_finalize;
folder_class = CAMEL_FOLDER_CLASS (class);
folder_class->get_message = nntp_folder_get_message;
static void
camel_nntp_folder_init (CamelNNTPFolder *nntp_folder)
{
- nntp_folder->priv = g_new0 (CamelNNTPFolderPrivate, 1);
+ nntp_folder->priv = CAMEL_NNTP_FOLDER_GET_PRIVATE (nntp_folder);
nntp_folder->changes = camel_folder_change_info_new ();
nntp_folder->priv->search_lock = g_mutex_new ();
nntp_folder->priv->cache_lock = g_mutex_new ();
}
-CamelType
-camel_nntp_folder_get_type (void)
-{
- static CamelType camel_nntp_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_nntp_folder_type == CAMEL_INVALID_TYPE) {
- camel_nntp_folder_type = camel_type_register (CAMEL_DISCO_FOLDER_TYPE, "CamelNNTPFolder",
- sizeof (CamelNNTPFolder),
- sizeof (CamelNNTPFolderClass),
- (CamelObjectClassInitFunc) camel_nntp_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_folder_init,
- (CamelObjectFinalizeFunc) nntp_folder_finalize);
- }
-
- return camel_nntp_folder_type;
-}
-
CamelFolder *
camel_nntp_folder_new (CamelStore *parent,
const gchar *folder_name,
/* If this doesn't work, stuff wont save, but let it continue anyway */
g_mkdir_with_parents (root, 0700);
- folder = (CamelFolder *) camel_object_new (CAMEL_NNTP_FOLDER_TYPE);
+ folder = g_object_new (CAMEL_TYPE_NNTP_FOLDER, NULL);
nntp_folder = (CamelNNTPFolder *)folder;
camel_folder_construct (folder, parent, folder_name, folder_name);
}
if (subscribed && !camel_folder_refresh_info (folder, ex)) {
- camel_object_unref (folder);
+ g_object_unref (folder);
folder = NULL;
}
#include <camel/camel.h>
-#define CAMEL_NNTP_FOLDER_TYPE (camel_nntp_folder_get_type ())
-#define CAMEL_NNTP_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_NNTP_FOLDER_TYPE, CamelNNTPFolder))
-#define CAMEL_NNTP_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_NNTP_FOLDER_TYPE, CamelNNTPFolderClass))
-#define CAMEL_IS_NNTP_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_NNTP_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_NNTP_FOLDER \
+ (camel_nntp_folder_get_type ())
+#define CAMEL_NNTP_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_NNTP_FOLDER, CamelNNTPFolder))
+#define CAMEL_NNTP_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_NNTP_FOLDER, CamelNNTPFolderClass))
+#define CAMEL_IS_NNTP_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_NNTP_FOLDER))
+#define CAMEL_IS_NNTP_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_NNTP_FOLDER))
+#define CAMEL_NNTP_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_NNTP_FOLDER, CamelNNTPFolderClass))
G_BEGIN_DECLS
CamelDiscoFolderClass parent;
};
-CamelType camel_nntp_folder_get_type (void);
+GType camel_nntp_folder_get_type (void);
CamelFolder *camel_nntp_folder_new (CamelStore *parent, const gchar *folder_name, CamelException *ex);
static const gchar *store_info_string(CamelStoreSummary *, const CamelStoreInfo *, gint);
static void store_info_set_string(CamelStoreSummary *, CamelStoreInfo *, int, const gchar *);
-static gpointer camel_nntp_store_summary_parent_class;
+G_DEFINE_TYPE (CamelNNTPStoreSummary, camel_nntp_store_summary, CAMEL_TYPE_STORE_SUMMARY)
static void
camel_nntp_store_summary_class_init (CamelNNTPStoreSummaryClass *class)
{
CamelStoreSummaryClass *store_summary_class;
- camel_nntp_store_summary_parent_class = CAMEL_STORE_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_store_summary_get_type ()));
-
store_summary_class = CAMEL_STORE_SUMMARY_CLASS (class);
store_summary_class->summary_header_load = summary_header_load;
store_summary_class->summary_header_save = summary_header_save;
sizeof (nntp_store_summary->last_newslist));
}
-CamelType
-camel_nntp_store_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_store_summary_get_type (),
- "CamelNNTPStoreSummary",
- sizeof (CamelNNTPStoreSummary),
- sizeof (CamelNNTPStoreSummaryClass),
- (CamelObjectClassInitFunc) camel_nntp_store_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_store_summary_init,
- (CamelObjectFinalizeFunc) NULL);
- }
-
- return type;
-}
-
/**
* camel_nntp_store_summary_new:
*
CamelNNTPStoreSummary *
camel_nntp_store_summary_new (void)
{
- return (CamelNNTPStoreSummary *) camel_object_new (camel_nntp_store_summary_get_type ());
+ return g_object_new (CAMEL_TYPE_NNTP_STORE_SUMMARY, NULL);
}
/**
#include <camel/camel.h>
-#define CAMEL_NNTP_STORE_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_nntp_store_summary_get_type (), CamelNNTPStoreSummary)
-#define CAMEL_NNTP_STORE_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_nntp_store_summary_get_type (), CamelNNTPStoreSummaryClass)
-#define CAMEL_IS_NNTP_STORE_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_nntp_store_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_NNTP_STORE_SUMMARY \
+ (camel_nntp_store_summary_get_type ())
+#define CAMEL_NNTP_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_NNTP_STORE_SUMMARY, CamelNNTPStoreSummary))
+#define CAMEL_NNTP_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_NNTP_STORE_SUMMARY, CamelNNTPStoreSummaryClass))
+#define CAMEL_IS_NNTP_STORE_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_NNTP_STORE_SUMMARY))
+#define CAMEL_IS_NNTP_STORE_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_NNTP_STORE_SUMMARY))
+#define CAMEL_NNTP_STORE_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_NNTP_STORE_SUMMARY, CamelNNTPStoreSummaryClass))
G_BEGIN_DECLS
CamelStoreSummaryClass summary_class;
};
-CamelType camel_nntp_store_summary_get_type (void);
+GType camel_nntp_store_summary_get_type (void);
CamelNNTPStoreSummary *camel_nntp_store_summary_new (void);
/* TODO: this api needs some more work, needs to support lists */
#define DUMP_EXTENSIONS
-static gpointer camel_nntp_store_parent_class;
+#define CAMEL_NNTP_STORE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_NNTP_STORE, CamelNNTPStorePrivate))
static gint camel_nntp_try_authenticate (CamelNNTPStore *store, CamelException *ex);
+G_DEFINE_TYPE (CamelNNTPStore, camel_nntp_store, CAMEL_TYPE_DISCO_STORE)
+
static void
-nntp_store_finalize (CamelObject *object)
+nntp_store_dispose (GObject *object)
{
- /* call base finalize */
CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (object);
- CamelDiscoStore *disco_store = (CamelDiscoStore *) nntp_store;
- struct _CamelNNTPStorePrivate *p = nntp_store->priv;
- struct _xover_header *xover, *xn;
+ CamelDiscoStore *disco_store = CAMEL_DISCO_STORE (object);
- camel_service_disconnect ((CamelService *)object, TRUE, NULL);
+ /* Only run this the first time. */
+ if (nntp_store->summary != NULL)
+ camel_service_disconnect (CAMEL_SERVICE (object), TRUE, NULL);
- if (nntp_store->summary) {
- camel_store_summary_save ((CamelStoreSummary *) nntp_store->summary);
- camel_object_unref (nntp_store->summary);
+ if (nntp_store->summary != NULL) {
+ camel_store_summary_save (
+ CAMEL_STORE_SUMMARY (nntp_store->summary));
+ g_object_unref (nntp_store->summary);
+ nntp_store->summary = NULL;
+ }
+
+ if (nntp_store->mem != NULL) {
+ g_object_unref (nntp_store->mem);
+ nntp_store->mem = NULL;
+ }
+
+ if (nntp_store->stream != NULL) {
+ g_object_unref (nntp_store->stream);
+ nntp_store->stream = NULL;
}
- camel_object_unref (nntp_store->mem);
- nntp_store->mem = NULL;
- if (nntp_store->stream)
- camel_object_unref (nntp_store->stream);
+ if (nntp_store->cache != NULL) {
+ g_object_unref (nntp_store->cache);
+ nntp_store->cache = NULL;
+ }
+
+ if (disco_store->diary != NULL) {
+ g_object_unref (disco_store->diary);
+ disco_store->diary = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_nntp_store_parent_class)->dispose (object);
+}
+
+static void
+nntp_store_finalize (GObject *object)
+{
+ CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (object);
+ struct _xover_header *xover, *xn;
- if (nntp_store->base_url)
- g_free (nntp_store->base_url);
- if (nntp_store->storage_path)
- g_free (nntp_store->storage_path);
+ g_free (nntp_store->base_url);
+ g_free (nntp_store->storage_path);
xover = nntp_store->xover;
while (xover) {
xover = xn;
}
- if (nntp_store->cache)
- camel_object_unref (nntp_store->cache);
-
- if (disco_store->diary) {
- camel_object_unref (disco_store->diary);
- disco_store->diary = NULL;
- }
-
- g_free(p);
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_nntp_store_parent_class)->finalize (object);
}
static gboolean
ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
_("Could not connect to %s: %s"),
service->url->host, g_strerror (errno));
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
goto fail;
}
store->stream = (CamelNNTPStream *) camel_nntp_stream_new (tcp_stream);
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
/* Read the greeting, if any. */
if (camel_nntp_stream_line (store->stream, &buf, &len) == -1) {
_("Could not read greeting from %s: %s"),
service->url->host, g_strerror (errno));
- camel_object_unref (store->stream);
+ g_object_unref (store->stream);
store->stream = NULL;
goto fail;
_("NNTP server %s returned error code %d: %s"),
service->url->host, len, buf);
- camel_object_unref (store->stream);
+ g_object_unref (store->stream);
store->stream = NULL;
goto fail;
camel_exception_clear(ex);
}
- /* Chain up to parent's disconnect() method. */
if (!service_class->disconnect (service, clean, ex)) {
camel_service_unlock (CAMEL_SERVICE (store), CS_REC_CONNECT_LOCK);
return FALSE;
}
- camel_object_unref (store->stream);
+ g_object_unref (store->stream);
store->stream = NULL;
g_free(store->current_folder);
store->current_folder = NULL;
return FALSE;
if (disco->diary) {
- camel_object_unref (disco->diary);
+ g_object_unref (disco->diary);
disco->diary = NULL;
}
camel_object_trigger_event((CamelObject *) folder, "folder_changed", changes);
camel_folder_change_info_free(changes);
}
- camel_object_unref (folder);
+ g_object_unref (folder);
}
camel_exception_clear(ex);
}
static void
camel_nntp_store_class_init (CamelNNTPStoreClass *class)
{
+ GObjectClass *object_class;
CamelServiceClass *service_class;
CamelStoreClass *store_class;
CamelDiscoStoreClass *disco_store_class;
- camel_nntp_store_parent_class = CAMEL_DISCO_STORE_CLASS (camel_type_get_global_classfuncs (camel_disco_store_get_type ()));
+ g_type_class_add_private (class, sizeof (CamelNNTPStorePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = nntp_store_dispose;
+ object_class->finalize = nntp_store_finalize;
service_class = CAMEL_SERVICE_CLASS (class);
service_class->construct = nntp_construct;
nntp_store->mem = (CamelStreamMem *)camel_stream_mem_new();
- nntp_store->priv = g_new0 (CamelNNTPStorePrivate, 1);
-}
-
-CamelType
-camel_nntp_store_get_type (void)
-{
- static CamelType camel_nntp_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_nntp_store_type == CAMEL_INVALID_TYPE) {
- camel_nntp_store_type =
- camel_type_register (CAMEL_DISCO_STORE_TYPE,
- "CamelNNTPStore",
- sizeof (CamelNNTPStore),
- sizeof (CamelNNTPStoreClass),
- (CamelObjectClassInitFunc) camel_nntp_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_store_init,
- (CamelObjectFinalizeFunc) nntp_store_finalize);
- }
-
- return camel_nntp_store_type;
+ nntp_store->priv = CAMEL_NNTP_STORE_GET_PRIVATE (nntp_store);
}
static gint
#include "camel-nntp-stream.h"
#include "camel-nntp-store-summary.h"
-#define CAMEL_NNTP_STORE_TYPE (camel_nntp_store_get_type ())
-#define CAMEL_NNTP_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_NNTP_STORE_TYPE, CamelNNTPStore))
-#define CAMEL_NNTP_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_NNTP_STORE_TYPE, CamelNNTPStoreClass))
-#define CAMEL_IS_NNTP_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_NNTP_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_NNTP_STORE \
+ (camel_nntp_store_get_type ())
+#define CAMEL_NNTP_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_NNTP_STORE, CamelNNTPStore))
+#define CAMEL_NNTP_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_NNTP_STORE, CamelNNTPStoreClass))
+#define CAMEL_IS_NNTP_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_NNTP_STORE))
+#define CAMEL_IS_NNTP_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_NNTP_STORE))
+#define CAMEL_NNTP_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_NNTP_STORE, CamelNNTPStoreClass))
#define CAMEL_NNTP_EXT_SEARCH (1<<0)
#define CAMEL_NNTP_EXT_SETGET (1<<1)
};
-CamelType camel_nntp_store_get_type (void);
+GType camel_nntp_store_get_type (void);
gint camel_nntp_raw_commandv (CamelNNTPStore *store, struct _CamelException *ex, gchar **line, const gchar *fmt, va_list ap);
gint camel_nntp_raw_command(CamelNNTPStore *store, struct _CamelException *ex, gchar **line, const gchar *fmt, ...);
#include "camel-nntp-stream.h"
-#define dd(x) (camel_debug("nntp:stream")?(x):0)
+#define dd(x) (camel_debug ("nntp:stream")?(x):0)
#ifndef ECONNRESET
#define ECONNRESET EIO
#endif
-static CamelObjectClass *parent_class = NULL;
-
#define CAMEL_NNTP_STREAM_SIZE (4096)
#define CAMEL_NNTP_STREAM_LINE_SIZE (1024) /* maximum line size */
+G_DEFINE_TYPE (CamelNNTPStream, camel_nntp_stream, CAMEL_TYPE_STREAM)
+
+static void
+nntp_stream_dispose (GObject *object)
+{
+ CamelNNTPStream *stream = CAMEL_NNTP_STREAM (object);
+
+ if (stream->source != NULL) {
+ g_object_unref (stream->source);
+ stream->source = NULL;
+ }
+
+ /* Chain up to parent's dispose () method. */
+ G_OBJECT_CLASS (camel_nntp_stream_parent_class)->dispose (object);
+}
+
+static void
+nntp_stream_finalize (GObject *object)
+{
+ CamelNNTPStream *stream = CAMEL_NNTP_STREAM (object);
+
+ g_free (stream->buf);
+ g_free (stream->linebuf);
+
+ /* Chain up to parent's finalize () method. */
+ G_OBJECT_CLASS (camel_nntp_stream_parent_class)->finalize (object);
+}
+
static gint
nntp_stream_fill (CamelNNTPStream *is)
{
return 0;
}
-static void
-camel_nntp_stream_finalize(CamelNNTPStream *is)
-{
- g_free (is->buf);
- g_free (is->linebuf);
- if (is->source)
- camel_object_unref (is->source);
-}
-
-
static gssize
nntp_stream_read (CamelStream *stream,
gchar *buffer,
}
static void
-camel_nntp_stream_class_init (CamelStreamClass *class)
+camel_nntp_stream_class_init (CamelNNTPStreamClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- parent_class = camel_type_get_global_classfuncs( CAMEL_TYPE_OBJECT );
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = nntp_stream_dispose;
+ object_class->finalize = nntp_stream_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = nntp_stream_read;
is->mode = CAMEL_NNTP_STREAM_LINE;
}
-CamelType
-camel_nntp_stream_get_type (void)
-{
- static CamelType camel_nntp_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_nntp_stream_type == CAMEL_INVALID_TYPE) {
- camel_nntp_stream_type = camel_type_register( camel_stream_get_type(),
- "CamelNNTPStream",
- sizeof( CamelNNTPStream ),
- sizeof( CamelNNTPStreamClass ),
- (CamelObjectClassInitFunc) camel_nntp_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_stream_init,
- (CamelObjectFinalizeFunc) camel_nntp_stream_finalize );
- }
-
- return camel_nntp_stream_type;
-}
-
/**
* camel_nntp_stream_new:
*
{
CamelNNTPStream *is;
- is = (CamelNNTPStream *)camel_object_new(camel_nntp_stream_get_type ());
- is->source = camel_object_ref (source);
+ is = g_object_new (CAMEL_TYPE_NNTP_STREAM, NULL);
+ is->source = g_object_ref (source);
return (CamelStream *)is;
}
#include <camel/camel.h>
-#define CAMEL_NNTP_STREAM(obj) CAMEL_CHECK_CAST (obj, camel_nntp_stream_get_type (), CamelNNTPStream)
-#define CAMEL_NNTP_STREAM_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_nntp_stream_get_type (), CamelNNTPStreamClass)
-#define CAMEL_IS_NNTP_STREAM(obj) CAMEL_CHECK_TYPE (obj, camel_nntp_stream_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_NNTP_STREAM \
+ (camel_nntp_stream_get_type ())
+#define CAMEL_NNTP_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_NNTP_STREAM, CamelNNTPStream))
+#define CAMEL_NNTP_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_NNTP_STREAM, CamelNNTPStreamClass))
+#define CAMEL_IS_NNTP_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_NNTP_STREAM))
+#define CAMEL_IS_NNTP_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_NNTP_STREAM))
+#define CAMEL_NNTP_STREAM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_NNTP_STREAM, CamelNNTPStreamClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_nntp_stream_get_type (void);
+GType camel_nntp_stream_get_type (void);
CamelStream * camel_nntp_stream_new (CamelStream *source);
#define EXTRACT_FIRST_DIGIT(val) val=strtoul (part, &part, 10);
#define EXTRACT_DIGIT(val) part++; val=strtoul (part, &part, 10);
+#define CAMEL_NNTP_SUMMARY_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), CAMEL_TYPE_NNTP_SUMMARY, CamelNNTPSummaryPrivate))
+
struct _CamelNNTPSummaryPrivate {
gchar *uid;
static gint summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *mir);
static CamelFIRecord * summary_header_to_db (CamelFolderSummary *s, CamelException *ex);
-static gpointer camel_nntp_summary_parent_class;
-
-static void
-nntp_summary_finalize (CamelNNTPSummary *nntp_summary)
-{
- g_free (nntp_summary->priv);
-}
+G_DEFINE_TYPE (CamelNNTPSummary, camel_nntp_summary, CAMEL_TYPE_FOLDER_SUMMARY)
static void
camel_nntp_summary_class_init (CamelNNTPSummaryClass *class)
{
CamelFolderSummaryClass *folder_summary_class;
- camel_nntp_summary_parent_class = CAMEL_FOLDER_SUMMARY_CLASS(camel_type_get_global_classfuncs(camel_folder_summary_get_type()));
+ g_type_class_add_private (class, sizeof (CamelNNTPSummaryPrivate));
folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (class);
folder_summary_class->message_info_size = sizeof (CamelMessageInfoBase);
{
CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (nntp_summary);
- nntp_summary->priv = g_new0 (CamelNNTPSummaryPrivate, 1);
+ nntp_summary->priv = CAMEL_NNTP_SUMMARY_GET_PRIVATE (nntp_summary);
/* and a unique file version */
summary->version += CAMEL_NNTP_SUMMARY_VERSION;
}
-CamelType
-camel_nntp_summary_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_folder_summary_get_type(), "CamelNNTPSummary",
- sizeof (CamelNNTPSummary),
- sizeof (CamelNNTPSummaryClass),
- (CamelObjectClassInitFunc) camel_nntp_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_summary_init,
- (CamelObjectFinalizeFunc) nntp_summary_finalize);
- }
-
- return type;
-}
-
CamelNNTPSummary *
camel_nntp_summary_new (CamelFolder *folder, const gchar *path)
{
CamelNNTPSummary *cns;
- cns = (CamelNNTPSummary *)camel_object_new(camel_nntp_summary_get_type());
+ cns = g_object_new (CAMEL_TYPE_NNTP_SUMMARY, NULL);
((CamelFolderSummary *)cns)->folder = folder;
camel_folder_summary_set_filename ((CamelFolderSummary *)cns, path);
g_free (cns->priv->uid);
cns->priv->uid = NULL;
}
- camel_object_unref (mp);
+ g_object_unref (mp);
camel_operation_end (NULL);
#include <camel/camel.h>
-#define CAMEL_NNTP_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_nntp_summary_get_type (), CamelNNTPSummary)
-#define CAMEL_NNTP_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_nntp_summary_get_type (), CamelNNTPSummaryClass)
-#define CAMEL_IS_LOCAL_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_nntp_summary_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_NNTP_SUMMARY \
+ (camel_nntp_summary_get_type ())
+#define CAMEL_NNTP_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_NNTP_SUMMARY, CamelNNTPSummary))
+#define CAMEL_NNTP_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_NNTP_SUMMARY, CamelNNTPSummaryClass))
+#define CAMEL_IS_NNTP_SUMMARY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_NNTP_SUMMARY))
+#define CAMEL_IS_NNTP_SUMMARY_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_NNTP_SUMMARY))
+#define CAMEL_NNTP_SUMMARY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_NNTP_SUMMARY, CamelNNTPSummaryClass))
G_BEGIN_DECLS
CamelFolderSummaryClass parent_class;
};
-CamelType camel_nntp_summary_get_type (void);
+GType camel_nntp_summary_get_type (void);
CamelNNTPSummary *camel_nntp_summary_new(struct _CamelFolder *folder, const gchar *path);
gint camel_nntp_summary_check(CamelNNTPSummary *cns, struct _CamelNNTPStore *store, gchar *line, struct _CamelFolderChangeInfo *changes, struct _CamelException *ex);
static void get_capabilities(CamelPOP3Engine *pe);
-static CamelObjectClass *parent_class = NULL;
+G_DEFINE_TYPE (CamelPOP3Engine, camel_pop3_engine, CAMEL_TYPE_OBJECT)
static void
-pop3_engine_finalize (CamelPOP3Engine *engine)
+pop3_engine_dispose (GObject *object)
{
- /* FIXME: Also flush/free any outstanding requests, etc */
+ CamelPOP3Engine *engine = CAMEL_POP3_ENGINE (object);
+
+ if (engine->stream != NULL) {
+ g_object_unref (engine->stream);
+ engine->stream = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_pop3_engine_parent_class)->dispose (object);
+}
+
+static void
+pop3_engine_finalize (GObject *object)
+{
+ CamelPOP3Engine *engine = CAMEL_POP3_ENGINE (object);
- if (engine->stream)
- camel_object_unref (engine->stream);
+ /* FIXME: Also flush/free any outstanding requests, etc */
g_list_free (engine->auth);
g_free (engine->apop);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_pop3_engine_parent_class)->finalize (object);
}
static void
camel_pop3_engine_class_init (CamelPOP3EngineClass *class)
{
- parent_class = camel_type_get_global_classfuncs( CAMEL_TYPE_OBJECT );
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = pop3_engine_dispose;
+ object_class->finalize = pop3_engine_finalize;
}
static void
engine->state = CAMEL_POP3_ENGINE_DISCONNECT;
}
-CamelType
-camel_pop3_engine_get_type (void)
-{
- static CamelType camel_pop3_engine_type = CAMEL_INVALID_TYPE;
-
- if (camel_pop3_engine_type == CAMEL_INVALID_TYPE) {
- camel_pop3_engine_type = camel_type_register(camel_object_get_type(),
- "CamelPOP3Engine",
- sizeof( CamelPOP3Engine ),
- sizeof( CamelPOP3EngineClass ),
- (CamelObjectClassInitFunc) camel_pop3_engine_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pop3_engine_init,
- (CamelObjectFinalizeFunc) pop3_engine_finalize );
- }
-
- return camel_pop3_engine_type;
-}
-
static gint
read_greeting (CamelPOP3Engine *pe)
{
{
CamelPOP3Engine *pe;
- pe = (CamelPOP3Engine *) camel_object_new(camel_pop3_engine_get_type ());
+ pe = g_object_new (CAMEL_TYPE_POP3_ENGINE, NULL);
pe->stream = (CamelPOP3Stream *)camel_pop3_stream_new(source);
pe->state = CAMEL_POP3_ENGINE_AUTH;
pe->flags = flags;
if (read_greeting (pe) == -1) {
- camel_object_unref (pe);
+ g_object_unref (pe);
return NULL;
}
#include "camel-pop3-stream.h"
-#define CAMEL_POP3_ENGINE(obj) CAMEL_CHECK_CAST (obj, camel_pop3_engine_get_type (), CamelPOP3Engine)
-#define CAMEL_POP3_ENGINE_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_pop3_engine_get_type (), CamelPOP3EngineClass)
-#define CAMEL_IS_POP3_ENGINE(obj) CAMEL_CHECK_TYPE (obj, camel_pop3_engine_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_POP3_ENGINE \
+ (camel_pop3_engine_get_type ())
+#define CAMEL_POP3_ENGINE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_POP3_ENGINE, CamelPOP3Engine))
+#define CAMEL_POP3_ENGINE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_POP3_ENGINE, CamelPOP3EngineClass))
+#define CAMEL_IS_POP3_ENGINE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_POP3_ENGINE))
+#define CAMEL_IS_POP3_ENGINE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_POP3_ENGINE))
+#define CAMEL_POP3_ENGINE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_POP3_ENGINE, CamelPOP3EngineClass))
G_BEGIN_DECLS
CamelObjectClass parent_class;
};
-CamelType camel_pop3_engine_get_type (void);
+GType camel_pop3_engine_get_type (void);
CamelPOP3Engine *camel_pop3_engine_new (CamelStream *source, guint32 flags);
#define d(x)
-static CamelFolderClass *parent_class;
-
static gboolean pop3_refresh_info (CamelFolder *folder, CamelException *ex);
static gboolean pop3_sync (CamelFolder *folder, gboolean expunge, CamelException *ex);
static gint pop3_get_message_count (CamelFolder *folder);
static gboolean pop3_set_message_flags (CamelFolder *folder, const gchar *uid, guint32 flags, guint32 set);
static gchar * pop3_get_filename (CamelFolder *folder, const gchar *uid, CamelException *ex);
+G_DEFINE_TYPE (CamelPOP3Folder, camel_pop3_folder, CAMEL_TYPE_FOLDER)
+
static void
-pop3_folder_finalize (CamelObject *object)
+pop3_folder_finalize (GObject *object)
{
CamelPOP3Folder *pop3_folder = CAMEL_POP3_FOLDER (object);
CamelPOP3FolderInfo **fi = (CamelPOP3FolderInfo **)pop3_folder->uids->pdata;
g_ptr_array_free(pop3_folder->uids, TRUE);
g_hash_table_destroy(pop3_folder->uids_uid);
}
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_pop3_folder_parent_class)->finalize (object);
}
static void
camel_pop3_folder_class_init (CamelPOP3FolderClass *class)
{
+ GObjectClass *object_class;
CamelFolderClass *folder_class;
- parent_class = CAMEL_FOLDER_CLASS(camel_folder_get_type());
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = pop3_folder_finalize;
folder_class = CAMEL_FOLDER_CLASS (class);
folder_class->refresh_info = pop3_refresh_info;
folder_class->set_message_flags = pop3_set_message_flags;
}
-CamelType
-camel_pop3_folder_get_type (void)
+static void
+camel_pop3_folder_init (CamelPOP3Folder *pop3_folder)
{
- static CamelType camel_pop3_folder_type = CAMEL_INVALID_TYPE;
-
- if (!camel_pop3_folder_type) {
- camel_pop3_folder_type = camel_type_register (CAMEL_FOLDER_TYPE, "CamelPOP3Folder",
- sizeof (CamelPOP3Folder),
- sizeof (CamelPOP3FolderClass),
- (CamelObjectClassInitFunc) camel_pop3_folder_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) pop3_folder_finalize);
- }
-
- return camel_pop3_folder_type;
}
CamelFolder *
d(printf("opening pop3 INBOX folder\n"));
- folder = CAMEL_FOLDER (camel_object_new (CAMEL_POP3_FOLDER_TYPE));
+ folder = g_object_new (CAMEL_TYPE_POP3_FOLDER, NULL);
camel_folder_construct (folder, parent, "inbox", "inbox");
/* mt-ok, since we dont have the folder-lock for new() */
if (!camel_folder_refresh_info (folder, ex)) { /* mt-ok */
- camel_object_unref (folder);
+ g_object_unref (folder);
folder = NULL;
}
default:
break;
}
- camel_object_unref (mp);
+ g_object_unref (mp);
g_checksum_get_digest (checksum, digest, &length);
g_checksum_free (checksum);
message = camel_mime_message_new ();
if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *)message, stream) == -1) {
g_warning (_("Cannot get message %s: %s"), uid, g_strerror (errno));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
}
res = TRUE;
*message_time = message->date + message->date_offset;
- camel_object_unref (message);
+ g_object_unref (message);
}
}
if (stream) {
- camel_object_unref (stream);
+ g_object_unref (stream);
}
return res;
}
message = pop3_get_message (folder, fi->uid, ex);
if (message) {
message_time = message->date + message->date_offset;
- camel_object_unref (message);
+ g_object_unref (message);
}
}
fi->err = 0;
}
- camel_object_unref (fi->stream);
+ g_object_unref (fi->stream);
fi->stream = NULL;
}
stream = camel_stream_mem_new();
/* ref it, the cache storage routine unref's when done */
- fi->stream = camel_object_ref (stream);
+ fi->stream = g_object_ref (stream);
fi->err = EIO;
pcr = camel_pop3_engine_command_new(pop3_store->engine, CAMEL_POP3_COMMAND_MULTI, cmd_tocache, fi, "RETR %u\r\n", fi->id);
ex, CAMEL_EXCEPTION_SYSTEM,
_("Cannot get message %s: %s"),
uid, g_strerror (errno));
- camel_object_unref (message);
+ g_object_unref (message);
message = NULL;
}
done:
- camel_object_unref (stream);
+ g_object_unref (stream);
fail:
camel_operation_end(NULL);
#include <camel/camel.h>
-#define CAMEL_POP3_FOLDER_TYPE (camel_pop3_folder_get_type ())
-#define CAMEL_POP3_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_POP3_FOLDER_TYPE, CamelPOP3Folder))
-#define CAMEL_POP3_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_POP3_FOLDER_TYPE, CamelPOP3FolderClass))
-#define CAMEL_IS_POP3_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_POP3_FOLDER_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_POP3_FOLDER \
+ (camel_pop3_folder_get_type ())
+#define CAMEL_POP3_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_POP3_FOLDER, CamelPOP3Folder))
+#define CAMEL_POP3_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_POP3_FOLDER, CamelPOP3FolderClass))
+#define CAMEL_IS_POP3_FOLDER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_POP3_FOLDER))
+#define CAMEL_IS_POP3_FOLDER_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_POP3_FOLDER))
+#define CAMEL_POP3_FOLDER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_POP3_FOLDER, CamelPOP3FolderClass))
G_BEGIN_DECLS
/* public methods */
CamelFolder *camel_pop3_folder_new (CamelStore *parent, CamelException *ex);
-CamelType camel_pop3_folder_get_type (void);
+GType camel_pop3_folder_get_type (void);
gint camel_pop3_delete_old(CamelFolder *folder, gint days_to_delete, CamelException *ex);
static gboolean pop3_can_refresh_folder (CamelStore *store, CamelFolderInfo *info, CamelException *ex);
+G_DEFINE_TYPE (CamelPOP3Store, camel_pop3_store, CAMEL_TYPE_STORE)
+
static void
-pop3_store_finalize (CamelObject *object)
+pop3_store_finalize (GObject *object)
{
CamelPOP3Store *pop3_store = CAMEL_POP3_STORE (object);
camel_service_disconnect((CamelService *)pop3_store, TRUE, NULL);
if (pop3_store->engine)
- camel_object_unref (pop3_store->engine);
+ g_object_unref (pop3_store->engine);
if (pop3_store->cache)
- camel_object_unref (pop3_store->cache);
+ g_object_unref (pop3_store->cache);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_pop3_store_parent_class)->finalize (object);
}
static void
camel_pop3_store_class_init (CamelPOP3StoreClass *class)
{
+ GObjectClass *object_class;
CamelServiceClass *service_class;
CamelStoreClass *store_class;
- camel_pop3_store_parent_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
+ object_class = G_OBJECT_CLASS (class);
+ object_class->finalize = pop3_store_finalize;
service_class = CAMEL_SERVICE_CLASS (class);
service_class->query_auth_types = query_auth_types;
{
}
-CamelType
-camel_pop3_store_get_type (void)
-{
- static CamelType camel_pop3_store_type = CAMEL_INVALID_TYPE;
-
- if (!camel_pop3_store_type) {
- camel_pop3_store_type = camel_type_register (CAMEL_STORE_TYPE,
- "CamelPOP3Store",
- sizeof (CamelPOP3Store),
- sizeof (CamelPOP3StoreClass),
- (CamelObjectClassInitFunc) camel_pop3_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pop3_store_init,
- pop3_store_finalize);
- }
-
- return camel_pop3_store_type;
-}
-
enum {
MODE_CLEAR,
MODE_SSL,
_("Could not connect to %s: %s"),
service->url->host, g_strerror (errno));
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
/* parent class connect initialization */
if (CAMEL_SERVICE_CLASS (camel_pop3_store_parent_class)->connect (service, ex) == FALSE) {
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
ex, CAMEL_EXCEPTION_SYSTEM,
_("Failed to read a valid greeting from POP server %s"),
service->url->host);
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
if (ssl_mode != MODE_TLS) {
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return TRUE;
}
goto stls_exception;
#endif /* HAVE_SSL */
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
/* rfc2595, section 4 states that after a successful STLS
command, the client MUST discard prior CAPA responses */
camel_pop3_engine_command_free (store->engine, pc);
}
- camel_object_unref (CAMEL_OBJECT (store->engine));
- camel_object_unref (CAMEL_OBJECT (tcp_stream));
+ g_object_unref (CAMEL_OBJECT (store->engine));
+ g_object_unref (CAMEL_OBJECT (tcp_stream));
store->engine = NULL;
return FALSE;
goto ioerror;
}
- camel_object_unref (sasl);
+ g_object_unref (sasl);
return 0;
ioerror:
CAMEL_SERVICE (store)->url->host, g_strerror (errno));
}
done:
- camel_object_unref (sasl);
+ g_object_unref (sasl);
return -1;
}
if (!service_class->disconnect (service, clean, ex))
return FALSE;
- camel_object_unref (store->engine);
+ g_object_unref (store->engine);
store->engine = NULL;
return TRUE;
#include "camel-pop3-engine.h"
-#define CAMEL_POP3_STORE_TYPE (camel_pop3_store_get_type ())
-#define CAMEL_POP3_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_POP3_STORE_TYPE, CamelPOP3Store))
-#define CAMEL_POP3_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_POP3_STORE_TYPE, CamelPOP3StoreClass))
-#define CAMEL_IS_POP3_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_POP3_STORE_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_POP3_STORE \
+ (camel_pop3_store_get_type ())
+#define CAMEL_POP3_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_POP3_STORE, CamelPOP3Store))
+#define CAMEL_POP3_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_POP3_STORE, CamelPOP3StoreClass))
+#define CAMEL_IS_POP3_STORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_POP3_STORE))
+#define CAMEL_IS_POP3_STORE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_POP3_STORE))
+#define CAMEL_POP3_STORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_POP3_STORE, CamelPOP3StoreClass))
G_BEGIN_DECLS
CamelStoreClass parent_class;
};
-CamelType camel_pop3_store_get_type (void);
+GType camel_pop3_store_get_type (void);
/* public methods */
void camel_pop3_store_expunge (CamelPOP3Store *store, CamelException *ex);
#include <stdio.h>
#include <string.h>
-#include <glib.h>
-
#include "camel-pop3-stream.h"
extern gint camel_verbose_debug;
#define dd(x) (camel_verbose_debug?(x):0)
-static CamelObjectClass *parent_class = NULL;
-
#define CAMEL_POP3_STREAM_SIZE (4096)
#define CAMEL_POP3_STREAM_LINE (1024) /* maximum line size */
+G_DEFINE_TYPE (CamelPOP3Stream, camel_pop3_stream, CAMEL_TYPE_STREAM)
+
static void
-pop3_stream_finalize (CamelPOP3Stream *is)
+pop3_stream_dispose (GObject *object)
{
- g_free (is->buf);
- g_free (is->linebuf);
- if (is->source)
- camel_object_unref (is->source);
+ CamelPOP3Stream *stream = CAMEL_POP3_STREAM (object);
+
+ if (stream->source != NULL) {
+ g_object_unref (stream->source);
+ stream->source = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (camel_pop3_stream_parent_class)->dispose (object);
+}
+
+static void
+pop3_stream_finalize (GObject *object)
+{
+ CamelPOP3Stream *stream = CAMEL_POP3_STREAM (object);
+
+ g_free (stream->buf);
+ g_free (stream->linebuf);
+
+ /* Chain up to parent's finalize() method. */
+ G_OBJECT_CLASS (camel_pop3_stream_parent_class)->finalize (object);
}
static gint
}
static void
-camel_pop3_stream_class_init (CamelStreamClass *class)
+camel_pop3_stream_class_init (CamelPOP3StreamClass *class)
{
+ GObjectClass *object_class;
CamelStreamClass *stream_class;
- parent_class = camel_type_get_global_classfuncs( CAMEL_TYPE_OBJECT );
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = pop3_stream_dispose;
+ object_class->finalize = pop3_stream_finalize;
stream_class = CAMEL_STREAM_CLASS (class);
stream_class->read = stream_read;
is->mode = CAMEL_POP3_STREAM_LINE;
}
-CamelType
-camel_pop3_stream_get_type (void)
-{
- static CamelType camel_pop3_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_pop3_stream_type == CAMEL_INVALID_TYPE) {
- camel_pop3_stream_type = camel_type_register( camel_stream_get_type(),
- "CamelPOP3Stream",
- sizeof( CamelPOP3Stream ),
- sizeof( CamelPOP3StreamClass ),
- (CamelObjectClassInitFunc) camel_pop3_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pop3_stream_init,
- (CamelObjectFinalizeFunc) pop3_stream_finalize );
- }
-
- return camel_pop3_stream_type;
-}
-
/**
* camel_pop3_stream_new:
*
{
CamelPOP3Stream *is;
- is = (CamelPOP3Stream *)camel_object_new(camel_pop3_stream_get_type ());
- is->source = camel_object_ref (source);
+ is = g_object_new (CAMEL_TYPE_POP3_STREAM, NULL);
+ is->source = g_object_ref (source);
return (CamelStream *)is;
}
#include <camel/camel.h>
-#define CAMEL_POP3_STREAM(obj) CAMEL_CHECK_CAST (obj, camel_pop3_stream_get_type (), CamelPOP3Stream)
-#define CAMEL_POP3_STREAM_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_pop3_stream_get_type (), CamelPOP3StreamClass)
-#define CAMEL_IS_POP3_STREAM(obj) CAMEL_CHECK_TYPE (obj, camel_pop3_stream_get_type ())
+/* Standard GObject macros */
+#define CAMEL_TYPE_POP3_STREAM \
+ (camel_pop3_stream_get_type ())
+#define CAMEL_POP3_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_POP3_STREAM, CamelPOP3Stream))
+#define CAMEL_POP3_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_POP3_STREAM, CamelPOP3StreamClass))
+#define CAMEL_IS_POP3_STREAM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_POP3_STREAM))
+#define CAMEL_IS_POP3_STREAM_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_POP3_STREAM))
+#define CAMEL_POP3_STREAM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_POP3_STREAM, CamelPOP3StreamClass))
G_BEGIN_DECLS
CamelStreamClass parent_class;
};
-CamelType camel_pop3_stream_get_type (void);
+GType camel_pop3_stream_get_type (void);
CamelStream *camel_pop3_stream_new (CamelStream *source);
CamelAddress *from, CamelAddress *recipients,
CamelException *ex);
+G_DEFINE_TYPE (CamelSendmailTransport, camel_sendmail_transport, CAMEL_TYPE_TRANSPORT)
+
static void
camel_sendmail_transport_class_init (CamelSendmailTransportClass *class)
{
transport_class->send_to = sendmail_send_to;
}
-CamelType
-camel_sendmail_transport_get_type (void)
+static void
+camel_sendmail_transport_init (CamelSendmailTransport *sendmail_transport)
{
- static CamelType camel_sendmail_transport_type = CAMEL_INVALID_TYPE;
-
- if (camel_sendmail_transport_type == CAMEL_INVALID_TYPE) {
- camel_sendmail_transport_type =
- camel_type_register (CAMEL_TRANSPORT_TYPE, "CamelSendmailTransport",
- sizeof (CamelSendmailTransport),
- sizeof (CamelSendmailTransportClass),
- (CamelObjectClassInitFunc) camel_sendmail_transport_class_init,
- NULL,
- (CamelObjectInitFunc) NULL,
- NULL);
- }
-
- return camel_sendmail_transport_type;
}
static gboolean
filter = camel_stream_filter_new (out);
crlf = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_DECODE, CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
camel_stream_filter_add (CAMEL_STREAM_FILTER (filter), crlf);
- camel_object_unref (crlf);
- camel_object_unref (out);
+ g_object_unref (crlf);
+ g_object_unref (out);
out = (CamelStream *) filter;
if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), out) == -1
|| camel_stream_close (out) == -1) {
- camel_object_unref (CAMEL_OBJECT (out));
+ g_object_unref (CAMEL_OBJECT (out));
camel_exception_setv (
ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not send message: %s"),
return FALSE;
}
- camel_object_unref (CAMEL_OBJECT (out));
+ g_object_unref (CAMEL_OBJECT (out));
/* Wait for sendmail to exit. */
while (waitpid (pid, &wstat, 0) == -1 && errno == EINTR)
#include <camel/camel.h>
-#define CAMEL_SENDMAIL_TRANSPORT_TYPE (camel_sendmail_transport_get_type ())
-#define CAMEL_SENDMAIL_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SENDMAIL_TRANSPORT_TYPE, CamelSendmailTransport))
-#define CAMEL_SENDMAIL_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SENDMAIL_TRANSPORT_TYPE, CamelSendmailTransportClass))
-#define CAMEL_IS_SENDMAIL_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_SENDMAIL_TRANSPORT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SENDMAIL_TRANSPORT \
+ (camel_sendmail_transport_get_type ())
+#define CAMEL_SENDMAIL_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SENDMAIL_TRANSPORT, CamelSendmailTransport))
+#define CAMEL_SENDMAIL_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SENDMAIL_TRANSPORT, CamelSendmailTransportClass))
+#define CAMEL_IS_SENDMAIL_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SENDMAIL_TRANSPORT))
+#define CAMEL_IS_SENDMAIL_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SENDMAIL_TRANSPORT))
+#define CAMEL_SENDMAIL_TRANSPORT_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SENDMAIL_TRANSPORT, CamelSendmailTransportClass))
G_BEGIN_DECLS
CamelTransportClass parent_class;
};
-CamelType camel_sendmail_transport_get_type (void);
+GType camel_sendmail_transport_get_type (void);
G_END_DECLS
static void smtp_set_exception (CamelSmtpTransport *transport, gboolean disconnect, const gchar *respbuf,
const gchar *message, CamelException *ex);
-/* private data members */
-static gpointer camel_smtp_transport_parent_class;
+G_DEFINE_TYPE (CamelSmtpTransport, camel_smtp_transport, CAMEL_TYPE_TRANSPORT)
static void
camel_smtp_transport_class_init (CamelSmtpTransportClass *class)
CamelTransportClass *transport_class;
CamelServiceClass *service_class;
- camel_smtp_transport_parent_class = CAMEL_TRANSPORT_CLASS (camel_type_get_global_classfuncs (camel_transport_get_type ()));
-
service_class = CAMEL_SERVICE_CLASS (class);
service_class->connect = smtp_connect;
service_class->disconnect = smtp_disconnect;
smtp->connected = FALSE;
}
-CamelType
-camel_smtp_transport_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_TRANSPORT_TYPE,
- "CamelSmtpTransport",
- sizeof (CamelSmtpTransport),
- sizeof (CamelSmtpTransportClass),
- (CamelObjectClassInitFunc) camel_smtp_transport_class_init,
- NULL,
- (CamelObjectInitFunc) camel_smtp_transport_init,
- NULL);
- }
-
- return type;
-}
-
static const gchar *
smtp_error_string (gint error)
{
_("Could not connect to %s: %s"),
service->url->host, g_strerror (errno));
- camel_object_unref (tcp_stream);
+ g_object_unref (tcp_stream);
return FALSE;
}
exception_cleanup:
- camel_object_unref (transport->istream);
+ g_object_unref (transport->istream);
transport->istream = NULL;
- camel_object_unref (transport->ostream);
+ g_object_unref (transport->ostream);
transport->ostream = NULL;
transport->connected = FALSE;
truth = camel_sasl_get_authenticated (sasl);
if (chal)
g_byte_array_free (chal, TRUE);
- camel_object_unref (sasl);
+ g_object_unref (sasl);
if (!truth)
return FALSE;
}
if (transport->istream) {
- camel_object_unref (transport->istream);
+ g_object_unref (transport->istream);
transport->istream = NULL;
}
if (transport->ostream) {
- camel_object_unref (transport->ostream);
+ g_object_unref (transport->ostream);
transport->ostream = NULL;
}
respbuf = camel_stream_buffer_read_line (
CAMEL_STREAM_BUFFER (transport->istream));
if (!respbuf || strncmp (respbuf, "250", 3)) {
- smtp_set_exception (transport, FALSE, respbuf, _("HELO command failed"), ex);
+ smtp_set_exception (
+ transport, FALSE, respbuf,
+ _("HELO command failed"), ex);
camel_operation_end (NULL);
g_free (respbuf);
return FALSE;
if (strncmp (respbuf, "235", 3) != 0)
goto lose;
- camel_object_unref (sasl);
+ g_object_unref (sasl);
camel_operation_end (NULL);
return TRUE;
_("Bad authentication response from server.\n"));
}
- camel_object_unref (sasl);
+ g_object_unref (sasl);
camel_operation_end (NULL);
g_free (respbuf);
filter = camel_mime_filter_progress_new (NULL, null->written);
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filtered_stream), filter);
- camel_object_unref (filter);
- camel_object_unref (null);
+ g_object_unref (filter);
+ g_object_unref (null);
/* setup LF->CRLF conversion */
filter = camel_mime_filter_crlf_new (
CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS);
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filtered_stream), filter);
- camel_object_unref (filter);
+ g_object_unref (filter);
/* write the message */
ret = camel_data_wrapper_write_to_stream (
_("DATA command failed: %s: mail not sent"),
g_strerror (errno));
- camel_object_unref (filtered_stream);
+ g_object_unref (filtered_stream);
camel_service_disconnect ((CamelService *) transport, FALSE, NULL);
return FALSE;
}
camel_stream_flush (filtered_stream);
- camel_object_unref (filtered_stream);
+ g_object_unref (filtered_stream);
/* terminate the message body */
#include <camel/camel.h>
-#define CAMEL_SMTP_TRANSPORT_TYPE (camel_smtp_transport_get_type ())
-#define CAMEL_SMTP_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SMTP_TRANSPORT_TYPE, CamelSmtpTransport))
-#define CAMEL_SMTP_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SMTP_TRANSPORT_TYPE, CamelSmtpTransportClass))
-#define CAMEL_IS_SMTP_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_SMTP_TRANSPORT_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_SMTP_TRANSPORT \
+ (camel_smtp_transport_get_type ())
+#define CAMEL_SMTP_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SMTP_TRANSPORT, CamelSmtpTransport))
+#define CAMEL_SMTP_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SMTP_TRANSPORT, CamelSmtpTransportClass))
+#define CAMEL_IS_SMTP_TRANSPORT(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SMTP_TRANSPORT))
+#define CAMEL_IS_SMTP_TRANSPORT_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SMTP_TRANSPORT))
+#define CAMEL_SMTP_TRANSPORT_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SMTP_TRANSPORT, CamelSmtpTransportClass))
#define CAMEL_SMTP_TRANSPORT_IS_ESMTP (1 << 0)
#define CAMEL_SMTP_TRANSPORT_8BITMIME (1 << 1)
CamelTransportClass parent_class;
};
-CamelType camel_smtp_transport_get_type (void);
+GType camel_smtp_transport_get_type (void);
G_END_DECLS
"local"
};
-static gchar *local_providers[] = {
+static const gchar *local_providers[] = {
"mbox",
"mh",
"maildir"
g_free(path);
}
- camel_object_unref (session);
+ g_object_unref (session);
camel_exception_free(ex);
return 0;
#define d(x)
static const gchar *local_drivers[] = { "local" };
-static gchar *local_providers[] = {
+static const gchar *local_providers[] = {
"mbox",
"mh",
"maildir"
folder = camel_store_get_folder(store, "testbox", CAMEL_STORE_FOLDER_CREATE, ex);
camel_exception_clear(ex);
if (testid == 0) {
- camel_object_unref (folder);
- camel_object_unref (store);
+ g_object_unref (folder);
+ g_object_unref (store);
} else {
- camel_object_unref (store);
- camel_object_unref (folder);
+ g_object_unref (store);
+ g_object_unref (folder);
}
}
return NULL;
}
-gint main(gint argc, gchar **argv)
+gint
+main(gint argc, gchar **argv)
{
CamelException *ex;
gint i, j;
camel_test_end();
}
- camel_object_unref (session);
+ g_object_unref (session);
camel_exception_free(ex);
return 0;
g_ptr_array_free(folders, TRUE);
}
-gint main(gint argc, gchar **argv)
+gint
+main(gint argc, gchar **argv)
{
CamelException *ex;
CamelFolder *f1, *f2;
static const gchar *local_drivers[] = { "local" };
-static gchar *stores[] = {
+static const gchar *stores[] = {
"mbox:///tmp/camel-test/mbox",
"mh:///tmp/camel-test/mh",
"maildir:///tmp/camel-test/maildir"
static const gchar *local_drivers[] = { "local" };
-static gchar *stores[] = {
+static const gchar *stores[] = {
"mbox:///tmp/camel-test/mbox",
"mh:///tmp/camel-test/mh",
"maildir:///tmp/camel-test/maildir"
/* we iterate over all stores we want to test, with indexing or indexing turned on or off */
for (i = 0; i < G_N_ELEMENTS (stores); i++) {
- gchar *name = stores[i];
+ const gchar *name = stores[i];
for (indexed = 0;indexed<2;indexed++) {
gchar *what = g_strdup_printf("folder search: %s (%sindexed)", name, indexed?"":"non-");
gint flags;
static const gchar *imap_drivers[] = { "imap4" };
-static gchar *remote_providers[] = {
+static const gchar *remote_providers[] = {
"IMAP_TEST_URL",
};
/*camel_test_fatal();*/
}
- camel_object_unref (session);
+ g_object_unref (session);
camel_exception_free(ex);
return 0;
static const gchar *nntp_drivers[] = { "nntp" };
-static gchar *remote_providers[] = {
+static const gchar *remote_providers[] = {
"NNTP_TEST_URL",
};
camel_test_fatal();
}
- camel_object_unref (session);
+ g_object_unref (session);
camel_exception_free(ex);
return 0;
#include "session.h"
static const gchar *imap_drivers[] = { "imap4" };
-static gchar *remote_providers[] = {
+static const gchar *remote_providers[] = {
"IMAP_TEST_URL",
};
#include "session.h"
static const gchar *nntp_drivers[] = { "nntp" };
-static gchar *remote_providers[] = {
+static const gchar *remote_providers[] = {
"NNTP_TEST_URL",
};
static const gchar *local_drivers[] = { "local" };
-static gchar *local_providers[] = {
+static const gchar *local_providers[] = {
"mbox",
"mh",
"maildir"
content = g_strdup_printf("Test message %08x contents\n\n", id+i);
push("comparing content '%s': '%s'", res->pdata[0], content);
- test_message_compare_content(camel_medium_get_content ((CamelMedium *)msg), content, strlen(content));
+ test_message_compare_content(camel_medium_get_content((CamelMedium *)msg), content, strlen(content));
test_free(content);
pull();
}
}
- camel_object_unref (session);
+ g_object_unref (session);
camel_exception_free(ex);
return 0;
static const gchar *local_drivers[] = { "local" };
struct {
- gchar *name;
+ const gchar *name;
CamelFolder *folder;
} mailboxes[] = {
{ "INBOX", NULL },
};
struct {
- gchar *name, *match, *action;
+ const gchar *name, *match, *action;
} rules[] = {
{ "empty1", "(match-all (header-contains \"Frobnitz\"))", "(copy-to \"folder1\")" },
{ "empty2", "(header-contains \"Frobnitz\")", "(copy-to \"folder2\")" },
/* broken match rules */
struct {
- gchar *name, *match, *action;
+ const gchar *name, *match, *action;
} brokens[] = {
{ "count1", "(body-contains data50)", "(copy-to \"folder1\")" }, /* non string argument */
{ "count1", "(body-contains-stuff \"data3\")", "(move-to-folder \"folder2\")" }, /* invalid function */
/* broken action rules */
struct {
- gchar *name, *match, *action;
+ const gchar *name, *match, *action;
} brokena[] = {
{ "a", "(body-contains \"data2\")", "(body-contains \"help\")" }, /* rule in action */
{ "a", "(body-contains \"data2\")", "(move-to-folder-name \"folder2\")" }, /* unknown function */
{ "a", "(body-contains \"data2\")", "" }, /* empty */
};
-static CamelFolder *get_folder(CamelFilterDriver *d, const gchar *uri, gpointer data, CamelException *ex)
+static CamelFolder *
+get_folder (CamelFilterDriver *d,
+ const gchar *uri,
+ gpointer data,
+ CamelException *ex);
{
gint i;
for (i = 0; i < G_N_ELEMENTS (mailboxes); i++)
if (!strcmp(mailboxes[i].name, uri)) {
- return camel_object_ref (mailboxes[i].folder);
+ return g_object_ref (mailboxes[i].folder);
}
return NULL;
}
-
+#include "camel-test-provider.h"
#include "camel-test.h"
-void camel_test_provider_init(gint argc, gchar **argv)
+void
+camel_test_provider_init (gint argc, const gchar **argv)
{
gchar *name, *path;
gint i;
#include <glib.h>
-void camel_test_provider_init(gint argc, gchar **argv);
+void camel_test_provider_init(gint argc, const gchar **argv);
#endif
#endif
#define check_count(object, expected) do { \
- if (CAMEL_OBJECT(object)->ref_count != expected) { \
- camel_test_fail("%s->ref_count != %s\n\tref_count = %d", #object, #expected, CAMEL_OBJECT(object)->ref_count); \
+ if (G_OBJECT (object)->ref_count != expected) { \
+ camel_test_fail("%s->ref_count != %s\n\tref_count = %d", #object, #expected, G_OBJECT (object)->ref_count); \
} \
} while (0)
#define check_unref(object, expected) do { \
check_count(object, expected); \
- camel_object_unref (CAMEL_OBJECT(object)); \
+ g_object_unref(CAMEL_OBJECT(object)); \
if (expected == 1) { \
object = NULL; \
} \
/* cross check with info */
test_message_info(msg, info);
- camel_object_unref (msg);
+ g_object_unref (msg);
/* see if it is in the summary (only once) */
s = camel_folder_get_summary(folder);
+#include <camel/camel.h>
+
/* check the total/unread is what we think it should be, everywhere it can be determined */
void test_folder_counts(CamelFolder *folder, gint total, gint unread);
/* cross-check info/msg */
break;
case 3:
ba = g_byte_array_new();
- g_byte_array_append(ba, text, len);
+ g_byte_array_append(ba, (guint8 *) text, len);
content = (CamelStreamMem *)camel_stream_mem_new_with_byte_array(ba);
ba = NULL;
break;
case 4:
ba = g_byte_array_new();
- g_byte_array_append(ba, text, len);
+ g_byte_array_append(ba, (guint8 *) text, len);
content = (CamelStreamMem *)camel_stream_mem_new();
camel_stream_mem_set_byte_array(content, ba);
camel_data_wrapper_write_to_stream((CamelDataWrapper *)msg, (CamelStream *)file);
ret = camel_stream_close((CamelStream *)file);
- check(((CamelObject *)file)->ref_count == 1);
- camel_object_unref (file);
+ check(G_OBJECT (file)->ref_count == 1);
+ g_object_unref (file);
return ret;
}
camel_data_wrapper_construct_from_stream((CamelDataWrapper *)msg2, (CamelStream *)file);
/* file's refcount may be > 1 if the message is real big */
- check(CAMEL_OBJECT(file)->ref_count >=1);
- camel_object_unref (file);
+ check(G_OBJECT(file)->ref_count >=1);
+ g_object_unref (file);
return msg2;
}
if (byte_array->len != len) {
printf ("original text:\n");
- hexdump (text, len);
+ hexdump ((guchar *) text, len);
printf ("new text:\n");
hexdump (byte_array->data, byte_array->len);
check_msg (memcmp (byte_array1->data, byte_array2->data, byte_array1->len) == 0, "msg/stream compare");
- camel_object_unref (stream1);
- camel_object_unref (stream2);
+ g_object_unref (stream1);
+ g_object_unref (stream2);
return 0;
}
s[depth] = 0;
mime_type = camel_data_wrapper_get_mime_type((CamelDataWrapper *)part);
- printf("%sPart <%s>\n", s, ((CamelObject *)part)->klass->name);
+ printf("%sPart <%s>\n", s, G_OBJECT_TYPE_NAME (part));
printf("%sContent-Type: %s\n", s, mime_type);
g_free(mime_type);
printf("%s encoding: %s\n", s, camel_transfer_encoding_to_string(((CamelDataWrapper *)part)->encoding));
- printf("%s part encoding: %s\n", s, camel_transfer_encoding_to_string(camel_mime_part_get_encoding(part)));
+ printf("%s part encoding: %s\n", s, camel_transfer_encoding_to_string(camel_mime_part_get_encoding (part)));
containee = camel_medium_get_content (CAMEL_MEDIUM (part));
return;
mime_type = camel_data_wrapper_get_mime_type(containee);
- printf("%sContent <%s>\n", s, ((CamelObject *)containee)->klass->name);
+ printf("%sContent <%s>\n", s, G_OBJECT_TYPE_NAME (containee));
printf ("%sContent-Type: %s\n", s, mime_type);
g_free (mime_type);
printf("%s encoding: %s\n", s, camel_transfer_encoding_to_string(((CamelDataWrapper *)containee)->encoding));
#include "session.h"
+G_DEFINE_TYPE (CamelTestSession, camel_test_session, CAMEL_TYPE_SESSION)
+
static void
-class_init (CamelTestSessionClass *camel_test_session_class)
+camel_test_session_class_init (CamelTestSessionClass *class)
{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
}
-CamelType
-camel_test_session_get_type (void)
+static void
+camel_test_session_init (CamelTestSession *test_session)
{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
}
CamelSession *
{
CamelSession *session;
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
+ session = g_object_new (CAMEL_TYPE_TEST_SESSION, NULL);
camel_session_construct (session, path);
return session;
#include <camel/camel.h>
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
+/* Standard GObject macros */
+#define CAMEL_TYPE_TEST_SESSION \
+ (camel_test_session_get_type ())
+#define CAMEL_TEST_SESSION(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_TEST_SESSION, CamelTestSession))
+#define CAMEL_TEST_SESSION_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_TEST_SESSION, CamelTestSessionClass))
+#define CAMEL_IS_TEST_SESSION(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_TEST_SESSION))
+#define CAMEL_IS_TEST_SESSION_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_TEST_SESSION))
+#define CAMEL_TEST_SESSION_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_TEST_SESSION, CamelTestSessionClass))
-typedef struct _CamelTestSession {
- CamelSession parent;
+G_BEGIN_DECLS
-} CamelTestSession;
+typedef struct _CamelTestSession CamelTestSession;
+typedef struct _CamelTestSessionClass CamelTestSessionClass;
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
+struct _CamelTestSession {
+ CamelSession parent;
+};
-} CamelTestSessionClass;
+struct _CamelTestSessionClass {
+ CamelSessionClass parent_class;
+};
-CamelType camel_test_session_get_type (void);
+GType camel_test_session_get_type (void);
CamelSession *camel_test_session_new (const gchar *path);
+
+G_END_DECLS
len = (ss->bound_end-ss->bound_start) % sizeof(teststring);
check(camel_stream_write(s, teststring, len) == len);
check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_end);
- if (type == 0) {
+ if (G_UNLIKELY (type == G_TYPE_INVALID)) {
check(camel_stream_write(s, teststring, sizeof(teststring)) == 0);
check(camel_stream_eos(s));
check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_end);
part = camel_mime_part_new();
test_message_set_content_simple(part, 0, "text/plain", "content part 1", strlen("content part 1"));
camel_multipart_add_part(mp, part);
- check(CAMEL_OBJECT(part)->ref_count == 2);
+ check(G_OBJECT(part)->ref_count == 2);
check(camel_multipart_get_number(mp) == 1);
check(camel_multipart_get_part(mp, 0) == part);
check(camel_multipart_get_part(mp, 1) == NULL);
camel_multipart_remove_part(mp, part);
- check(CAMEL_OBJECT(part)->ref_count == 1);
+ check(G_OBJECT(part)->ref_count == 1);
check(camel_multipart_get_number(mp) == 0);
check(camel_multipart_get_part(mp, 0) == NULL);
check(camel_multipart_get_part(mp, 1) == NULL);
camel_multipart_add_part_at(mp, part, 0);
- check(CAMEL_OBJECT(part)->ref_count == 2);
+ check(G_OBJECT(part)->ref_count == 2);
check(camel_multipart_get_number(mp) == 1);
check(camel_multipart_get_part(mp, 0) == part);
check(camel_multipart_get_part(mp, 1) == NULL);
check(camel_multipart_remove_part_at(mp, 1) == NULL);
- check(CAMEL_OBJECT(part)->ref_count == 2);
+ check(G_OBJECT(part)->ref_count == 2);
check(camel_multipart_get_number(mp) == 1);
check(camel_multipart_get_part(mp, 0) == part);
check(camel_multipart_get_part(mp, 1) == NULL);
check(camel_multipart_remove_part_at(mp, 0) == part);
- check(CAMEL_OBJECT(part)->ref_count == 1);
+ check(G_OBJECT(part)->ref_count == 1);
check(camel_multipart_get_number(mp) == 0);
check(camel_multipart_get_part(mp, 0) == NULL);
check(camel_multipart_get_part(mp, 1) == NULL);
camel_multipart_add_part(mp, part);
- check(CAMEL_OBJECT(part)->ref_count == 2);
+ check(G_OBJECT(part)->ref_count == 2);
check(camel_multipart_get_number(mp) == 1);
check(camel_multipart_get_part(mp, 0) == part);
check(camel_multipart_get_part(mp, 1) == NULL);
part2 = camel_mime_part_new();
test_message_set_content_simple(part2, 0, "text/plain", "content part 2", strlen("content part 2"));
camel_multipart_add_part(mp, part2);
- check(CAMEL_OBJECT(part2)->ref_count == 2);
+ check(G_OBJECT(part2)->ref_count == 2);
check(camel_multipart_get_number(mp) == 2);
check(camel_multipart_get_part(mp, 0) == part);
check(camel_multipart_get_part(mp, 1) == part2);
part3 = camel_mime_part_new();
test_message_set_content_simple(part3, 0, "text/plain", "content part 3", strlen("content part 3"));
camel_multipart_add_part_at(mp, part3, 1);
- check(CAMEL_OBJECT(part3)->ref_count == 2);
+ check(G_OBJECT(part3)->ref_count == 2);
check(camel_multipart_get_number(mp) == 3);
check(camel_multipart_get_part(mp, 0) == part);
check(camel_multipart_get_part(mp, 1) == part3);
i++;
}
- content = camel_medium_get_content_object ((CamelMedium *) mime_part);
+ content = camel_medium_get_content ((CamelMedium *) mime_part);
mime_type = camel_data_wrapper_get_mime_type (content);
printf ("Content-Type: %s\n", mime_type);
/*dump_mime_struct ((CamelMimePart *) message, 0);*/
test_message_compare (message);
- camel_object_unref (message);
- camel_object_unref (stream);
+ g_object_unref (message);
+ g_object_unref (stream);
pull ();
}
ext = strchr (charset, '.');
*((gchar *) ext) = '\0';
- if (!(f = (CamelMimeFilter *) camel_mime_filter_charset_new (charset, "UTF-8"))) {
+ if (!(f = camel_mime_filter_charset_new (charset, "UTF-8"))) {
camel_test_fail ("Couldn't create CamelMimeFilterCharset??");
g_free (charset);
continue;
g_free (charset);
camel_stream_filter_add (filter, f);
- camel_object_unref (f);
+ g_object_unref (f);
camel_test_push ("Running filter and comparing to correct result");
/* inefficient */
camel_test_push ("Cleaning up");
- camel_object_unref (CAMEL_OBJECT (filter));
- camel_object_unref (CAMEL_OBJECT (correct));
- camel_object_unref (CAMEL_OBJECT (source));
+ g_object_unref (CAMEL_OBJECT (filter));
+ g_object_unref (CAMEL_OBJECT (correct));
+ g_object_unref (CAMEL_OBJECT (source));
camel_test_pull ();
camel_test_end ();
/* inefficient */
camel_test_push ("Cleaning up");
- camel_object_unref (CAMEL_OBJECT (filter));
- camel_object_unref (CAMEL_OBJECT (correct));
- camel_object_unref (CAMEL_OBJECT (source));
- camel_object_unref (CAMEL_OBJECT (sh));
+ g_object_unref (CAMEL_OBJECT (filter));
+ g_object_unref (CAMEL_OBJECT (correct));
+ g_object_unref (CAMEL_OBJECT (source));
+ g_object_unref (CAMEL_OBJECT (sh));
camel_test_pull ();
camel_test_pull ();
byte_array_in = g_byte_array_new ();
in = camel_stream_mem_new_with_byte_array (byte_array_in);
- filter = (CamelStream *)camel_stream_filter_new (indisk);
+ filter = camel_stream_filter_new (indisk);
check_count(indisk, 2);
id = camel_stream_filter_add((CamelStreamFilter *)filter, f);
check_count(f, 2);
- check(camel_stream_write_to_stream(filter, (CamelStream *)in) > 0);
+ check(camel_stream_write_to_stream(filter, in) > 0);
check_msg(byte_array_in->len == byte_array_out->len
&& memcmp(byte_array_in->data, byte_array_out->data, byte_array_in->len) == 0,
"Buffer content mismatch, %d != %d, in = '%.*s' != out = '%.*s'", byte_array_in->len, byte_array_out->len,
byte_array_in = g_byte_array_new ();
in = camel_stream_mem_new_with_byte_array (byte_array_in);
- filter = (CamelStream *)camel_stream_filter_new (in);
+ filter = camel_stream_filter_new (in);
check_count(in, 2);
id = camel_stream_filter_add((CamelStreamFilter *)filter, f);
check_count(f, 2);
struct {
gint flags;
- gchar *in;
- gchar *out;
+ const gchar *in;
+ const gchar *out;
} tests[] = {
{ CAMEL_MIME_FILTER_CANON_FROM|CAMEL_MIME_FILTER_CANON_CRLF,
"From \nRussia - with love.\n\n",
gint
main (gint argc, gchar **argv)
{
- CamelStreamFilter *filter;
+ CamelStream *filter;
CamelMimeFilter *sh;
gint i;
for (step=1;step<20;step++) {
GByteArray *byte_array;
CamelStream *out;
- gchar *p;
+ const gchar *p;
camel_test_push("Chunk size %d\n", step);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <glib.h>
#include <camel/camel-search-private.h>
#include "camel-test.h"
/* TODO: should put utf8 stuff here too */
static struct {
- gchar *word;
+ const gchar *word;
gint count;
struct {
- gchar *word;
+ const gchar *word;
gint type;
} splits[5];
} split_tests[] = {
};
static struct {
- gchar *word;
+ const gchar *word;
gint count;
struct {
- gchar *word;
+ const gchar *word;
gint type;
} splits[5];
} simple_tests[] = {
#include "camel-test.h"
struct {
- gchar *header;
- gchar *values[5];
+ const gchar *header;
+ const gchar *values[5];
} test1[] = {
{ "<test@camel.host>", { "test@camel.host" } },
{ "(this is a comment) <test@camel.host>", { "test@camel.host" } },
/* NB: We know which order the params will be decoded in, plain in the order they come,
and rfc2184 encoded following those, sorted lexigraphically */
struct {
- gchar *list;
+ const gchar *list;
gint count;
- gchar *params[8];
+ const gchar *params[8];
} test1[] = {
{ "; charset=\"iso-8859-1\"",
1,
struct {
gint count;
- gchar *params[8];
- gchar *list;
+ const gchar *params[8];
+ const gchar *list;
} test2[] = {
{ 1,
{ "name", "Doul\xC3\xADk01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123457890123456789123456789" },
#include "camel-test.h"
struct {
- gchar *text, *url;
+ const gchar *text, *url;
} url_tests[] = {
{ "bob@foo.com", "mailto:bob@foo.com" },
{ "Ends with bob@foo.com", "mailto:bob@foo.com" },
#include "camel-test.h"
-gchar *base = "http://a/b/c/d;p?q#f";
+const gchar *base = "http://a/b/c/d;p?q#f";
struct {
- gchar *url_string, *result;
+ const gchar *url_string, *result;
} tests[] = {
{ "g:h", "g:h" },
{ "g", "http://a/b/c/g" },
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <glib.h>
#include "camel-test.h"
static struct {
guchar *utf8;
- gchar *utf7;
+ const gchar *utf7;
guint32 unicode[200];
} tests[] = {
/* the escape gchar */
"the basics at least...\n";
#define CAMEL_PGP_SESSION_TYPE (camel_pgp_session_get_type ())
-#define CAMEL_PGP_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_PGP_SESSION_TYPE, CamelPgpSession))
-#define CAMEL_PGP_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_PGP_SESSION_TYPE, CamelPgpSessionClass))
-#define CAMEL_PGP_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_PGP_SESSION_TYPE))
+#define CAMEL_PGP_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), CAMEL_PGP_SESSION_TYPE, CamelPgpSession))
+#define CAMEL_PGP_SESSION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CAMEL_PGP_SESSION_TYPE, CamelPgpSessionClass))
+#define CAMEL_PGP_IS_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), CAMEL_PGP_SESSION_TYPE))
typedef struct _CamelPgpSession {
CamelSession parent_object;
CamelSessionClass *camel_session_class =
CAMEL_SESSION_CLASS (camel_pgp_session_class);
- /* virtual method override */
camel_session_class->get_password = get_password;
}
-static CamelType
+static GType
camel_pgp_session_get_type (void)
{
- static CamelType type = CAMEL_INVALID_TYPE;
+ static GType type = G_TYPE_INVALID;
- if (type == CAMEL_INVALID_TYPE) {
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
type = camel_type_register (
- camel_test_session_get_type (),
+ CAMEL_TYPE_TEST_SESSION,
"CamelPgpSession",
sizeof (CamelPgpSession),
sizeof (CamelPgpSessionClass),
- (CamelObjectClassInitFunc) class_init,
+ (GClassInitFunc) class_init,
NULL,
- (CamelObjectInitFunc) init,
+ (GInstanceInitFunc) init,
NULL);
- }
return type;
}
{
CamelSession *session;
- session = CAMEL_SESSION (camel_object_new (CAMEL_PGP_SESSION_TYPE));
-
+ session = g_object_new (CAMEL_TYPE_PGP_SESSION, NULL);
camel_session_construct (session, path);
return session;
check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
camel_test_pull ();
- camel_object_unref (mime_part);
+ g_object_unref (mime_part);
camel_exception_clear (ex);
camel_test_push ("PGP/MIME verify");
camel_cipher_validity_free (valid);
camel_test_pull ();
- camel_object_unref (mps);
+ g_object_unref (mps);
camel_exception_clear (ex);
mime_part = camel_mime_part_new ();
camel_test_pull ();
camel_exception_clear (ex);
- camel_object_unref (mime_part);
+ g_object_unref (mime_part);
camel_test_push ("PGP/MIME decrypt");
mime_part = camel_multipart_encrypted_decrypt (mpe, ctx, ex);
check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- camel_object_unref (mime_part);
- camel_object_unref (mpe);
+ g_object_unref (mime_part);
+ g_object_unref (mpe);
camel_test_pull ();
- camel_object_unref (CAMEL_OBJECT (ctx));
- camel_object_unref (CAMEL_OBJECT (session));
+ g_object_unref (CAMEL_OBJECT (ctx));
+ g_object_unref (CAMEL_OBJECT (session));
camel_test_end ();
#include "camel-test.h"
#include "session.h"
-#define CAMEL_PGP_SESSION_TYPE (camel_pgp_session_get_type ())
-#define CAMEL_PGP_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_PGP_SESSION_TYPE, CamelPgpSession))
-#define CAMEL_PGP_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_PGP_SESSION_TYPE, CamelPgpSessionClass))
-#define CAMEL_PGP_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_PGP_SESSION_TYPE))
+#define CAMEL_TYPE_PGP_SESSION (camel_pgp_session_get_type ())
+#define CAMEL_PGP_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), CAMEL_TYPE_PGP_SESSION, CamelPgpSession))
+#define CAMEL_PGP_SESSION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CAMEL_TYPE_PGP_SESSION, CamelPgpSessionClass))
+#define CAMEL_PGP_IS_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), CAMEL_TYPE_PGP_SESSION))
typedef struct _CamelPgpSession {
CamelSession parent_object;
CamelService *service, const gchar *item,
CamelException *ex);
-static void
-init (CamelPgpSession *session)
-{
- ;
-}
+G_DEFINE_TYPE (CamelPgpSession, camel_pgp_session, camel_test_session_get_type ())
static void
-class_init (CamelPgpSessionClass *camel_pgp_session_class)
+camel_pgp_session_class_init (CamelPgpSessionClass *class)
{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_pgp_session_class);
+ CamelSessionClass *session_class;
- /* virtual method override */
+ session_class = CAMEL_SESSION_CLASS (class);
camel_session_class->get_password = get_password;
}
-static CamelType
-camel_pgp_session_get_type (void)
+static void
+camel_pgp_session_init (CamelPgpSession *session)
{
static CamelType type = CAMEL_INVALID_TYPE;
{
CamelSession *session;
- session = CAMEL_SESSION (camel_object_new (CAMEL_PGP_SESSION_TYPE));
-
+ session = g_object_new (CAMEL_TYPE_PGP_SESSION, NULL);
camel_session_construct (session, path);
return session;
CamelException *ex;
CamelCipherValidity *valid;
CamelStream *stream1, *stream2;
+ GByteArray *buffer1, *buffer2;
struct _CamelMimePart *sigpart, *conpart, *encpart, *outpart;
CamelDataWrapper *dw;
GPtrArray *recipients;
- GByteArray *buf;
gchar *before, *after;
gint ret;
dw = camel_data_wrapper_new();
camel_data_wrapper_construct_from_stream(dw, stream1);
camel_medium_set_content ((CamelMedium *)conpart, dw);
- camel_object_unref (stream1);
- camel_object_unref (dw);
+ g_object_unref (stream1);
+ g_object_unref (dw);
sigpart = camel_mime_part_new();
camel_cipher_validity_free (valid);
camel_test_pull ();
- camel_object_unref (conpart);
- camel_object_unref (sigpart);
+ g_object_unref (conpart);
+ g_object_unref (sigpart);
stream1 = camel_stream_mem_new ();
camel_stream_write (stream1, "Hello, I am a test of encryption/decryption.", 44);
camel_stream_reset(stream1);
camel_data_wrapper_construct_from_stream(dw, stream1);
camel_medium_set_content ((CamelMedium *)conpart, dw);
- camel_object_unref (stream1);
- camel_object_unref (dw);
+ g_object_unref (stream1);
+ g_object_unref (dw);
encpart = camel_mime_part_new();
camel_test_push ("PGP encrypt");
recipients = g_ptr_array_new ();
- g_ptr_array_add (recipients, "no.user@no.domain");
+ g_ptr_array_add (recipients, (guint8 *) "no.user@no.domain");
camel_cipher_encrypt (ctx, "no.user@no.domain", recipients, conpart, encpart, ex);
check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
g_ptr_array_free (recipients, TRUE);
check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
check_msg (valid->encrypt.status == CAMEL_CIPHER_VALIDITY_ENCRYPT_ENCRYPTED, "%s", valid->encrypt.description);
- stream1 = camel_stream_mem_new();
- stream2 = camel_stream_mem_new();
+ buffer1 = g_byte_array_new ();
+ stream1 = camel_stream_mem_new_with_byte_array (buffer1);
+ buffer2 = g_byte_array_new ();
+ stream2 = camel_stream_mem_new_with_byte_array (buffer2);
camel_data_wrapper_write_to_stream((CamelDataWrapper *)conpart, stream1);
camel_data_wrapper_write_to_stream((CamelDataWrapper *)outpart, stream2);
- buf = camel_stream_mem_get_byte_array (CAMEL_STREAM_MEM (stream1));
- before = g_strndup (buf->data, buf->len);
- buf = camel_stream_mem_get_byte_array (CAMEL_STREAM_MEM (stream2));
- after = g_strndup (buf->data, buf->len);
+ before = g_strndup ((gchar *) buffer1->data, buffer1->len);
+ after = g_strndup ((gchar *) buffer2->data, buffer2->len);
check_msg (string_equal (before, after), "before = '%s', after = '%s'", before, after);
g_free (before);
g_free (after);
- camel_object_unref (stream1);
- camel_object_unref (stream2);
- camel_object_unref (conpart);
- camel_object_unref (encpart);
- camel_object_unref (outpart);
+ g_object_unref (stream1);
+ g_object_unref (stream2);
+ g_object_unref (conpart);
+ g_object_unref (encpart);
+ g_object_unref (outpart);
camel_test_pull ();
- camel_object_unref (CAMEL_OBJECT (ctx));
- camel_object_unref (CAMEL_OBJECT (session));
+ g_object_unref (CAMEL_OBJECT (ctx));
+ g_object_unref (CAMEL_OBJECT (session));
camel_test_end ();
#include "camel-test.h"
#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
+#define CAMEL_TEST_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
+#define CAMEL_TEST_SESSION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
+#define CAMEL_TEST_IS_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), CAMEL_TEST_SESSION_TYPE))
typedef struct _CamelTestSession {
CamelSession parent_object;
CamelSessionClass *camel_session_class =
CAMEL_SESSION_CLASS (camel_test_session_class);
- /* virtual method override */
camel_session_class->get_password = get_password;
}
-static CamelType
+static GType
camel_test_session_get_type (void)
{
- static CamelType type = CAMEL_INVALID_TYPE;
+ static GType type = G_TYPE_INVALID;
- if (type == CAMEL_INVALID_TYPE) {
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
type = camel_type_register (
- camel_test_session_get_type (),
+ CAMEL_TEST_SESSION_TYPE,
"CamelTestSession",
sizeof (CamelTestSession),
sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
+ (GClassInitFunc) class_init,
NULL,
- (CamelObjectInitFunc) init,
+ (GInstanceInitFunc) init,
NULL);
- }
return type;
}
{
CamelSession *session;
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
+ session = g_object_new (CAMEL_TYPE_TEST_SESSION, NULL);
camel_session_construct (session, path);
return session;
camel_cipher_validity_free (valid);
camel_test_pull ();
- camel_object_unref (CAMEL_OBJECT (stream1));
- camel_object_unref (CAMEL_OBJECT (stream2));
+ g_object_unref (CAMEL_OBJECT (stream1));
+ g_object_unref (CAMEL_OBJECT (stream2));
stream1 = camel_stream_mem_new ();
stream2 = camel_stream_mem_new ();
g_free (after);
camel_test_pull ();
- camel_object_unref (CAMEL_OBJECT (ctx));
- camel_object_unref (CAMEL_OBJECT (session));
+ g_object_unref (CAMEL_OBJECT (ctx));
+ g_object_unref (CAMEL_OBJECT (session));
camel_test_end ();
#include <sys/stat.h>
#include <unistd.h>
-gint main(gint argc, gchar **argv)
+gint
+main(gint argc, gchar **argv)
{
CamelSeekableStream *ss = NULL;
gint i;
#include <sys/stat.h>
#include <unistd.h>
-gint main(gint argc, gchar **argv)
+gint
+main(gint argc, gchar **argv)
{
CamelSeekableStream *ss = NULL;
- gint i;
- gint fd = -1;
- struct stat st;
- gint size;
- gchar buffer[1024];
GByteArray *ba;
+ gint i;
camel_test_init(argc, argv);
{ 10245, CAMEL_STREAM_UNBOUND },
};
-gint main(gint argc, gchar **argv)
+gint
+main(gint argc, gchar **argv)
{
CamelSeekableStream *ss = NULL;
gint i, j;
SCAN_OPTIONS = --deprecated-guards="CAMEL_DISABLE_DEPRECATED"
# Extra options to pass to gtkdoc-scangobj
-SCANGOBJ_OPTIONS=--type-init-func="camel_init (\".\", 0)"
+SCANGOBJ_OPTIONS =
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS = --sgml-mode --output-format=xml --name-space=camel
-I$(top_builddir)/camel \
$(GLIB_CFLAGS)
-GTKDOC_LIBS = \
- $(top_builddir)/camel/libcamel-2.0.la \
+GTKDOC_LIBS = \
+ $(top_builddir)/camel/libcamel-1.2.la \
+ $(top_builddir)/camel/libcamel-provider-1.2.la \
$(GLIB_LIBS)
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
camel-net-utils-win32.h \
camel-nntp-private.h \
camel-nntp-types.h \
- camel-private.h \
camel-search-private.h \
camel-types.h \
- camel-imapx-exception.h \
- camel-imapx-folder.h \
- camel-imapx-server.h \
- camel-imapx-store.h \
- camel-imapx-store-summary.h \
- camel-imapx-stream.h \
- camel-imapx-summary.h \
- camel-imapx-tokenise.h \
- camel-imapx-utils.h \
- camel-imapx-view-summary.h
+ camel-win32.h \
+ providers \
+ tests
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
<SUBSECTION Standard>
CAMEL_ADDRESS
CAMEL_IS_ADDRESS
+CAMEL_TYPE_ADDRESS
CAMEL_ADDRESS_CLASS
+CAMEL_IS_ADDRESS_CLASS
+CAMEL_ADDRESS_GET_CLASS
CamelAddressClass
<SUBSECTION Private>
+CamelAddressPrivate
camel_address_get_type
</SECTION>
camel_key_file_write
camel_key_file_read
<SUBSECTION Standard>
+CAMEL_BLOCK_FILE
+CAMEL_IS_BLOCK_FILE
+CAMEL_TYPE_BLOCK_FILE
+CAMEL_BLOCK_FILE_CLASS
+CAMEL_IS_BLOCK_FILE_CLASS
+CAMEL_BLOCK_FILE_GET_CLASS
+CAMEL_KEY_FILE
+CAMEL_IS_KEY_FILE
+CAMEL_TYPE_KEY_FILE
+CAMEL_KEY_FILE_CLASS
+CAMEL_IS_KEY_FILE_CLASS
+CAMEL_KEY_FILE_GET_CLASS
CamelBlockFileClass
CamelKeyFileClass
<SUBSECTION Private>
+CamelBlockFilePrivate
+CamelKeyFilePrivate
camel_block_file_get_type
camel_key_file_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_CERTDB
CAMEL_IS_CERTDB
-CAMEL_CERTDB_TYPE
+CAMEL_TYPE_CERTDB
CAMEL_CERTDB_CLASS
+CAMEL_IS_CERTDB_CLASS
+CAMEL_CERTDB_GET_CLASS
CamelCertDBClass
<SUBSECTION Private>
+CamelCertDBPrivate
camel_certdb_get_type
</SECTION>
camel_cipher_validity_encrypt_t
camel_cipher_validity_mode_t
camel_cipher_context_new
-camel_cipher_context_construct
+camel_cipher_context_get_session
camel_cipher_id_to_hash
camel_cipher_hash_to_id
camel_cipher_sign
<SUBSECTION Standard>
CAMEL_CIPHER_CONTEXT
CAMEL_IS_CIPHER_CONTEXT
-CAMEL_CIPHER_CONTEXT_TYPE
+CAMEL_TYPE_CIPHER_CONTEXT
CAMEL_CIPHER_CONTEXT_CLASS
+CAMEL_IS_CIPHER_CONTEXT_CLASS
+CAMEL_CIPHER_CONTEXT_GET_CLASS
CamelCipherContextClass
<SUBSECTION Private>
+CamelCipherContextPrivate
camel_cipher_context_get_type
</SECTION>
camel_data_cache_new
camel_data_cache_set_expire_age
camel_data_cache_set_expire_access
-camel_data_cache_rename
camel_data_cache_add
camel_data_cache_get
camel_data_cache_remove
-camel_data_cache_clear
camel_data_cache_get_filename
<SUBSECTION Standard>
CAMEL_DATA_CACHE
CAMEL_IS_DATA_CACHE
-CAMEL_DATA_CACHE_TYPE
+CAMEL_TYPE_DATA_CACHE
CAMEL_DATA_CACHE_CLASS
+CAMEL_IS_DATA_CACHE_CLASS
+CAMEL_DATA_CACHE_GET_CLASS
CamelDataCacheClass
<SUBSECTION Private>
+CamelDataCachePrivate
camel_data_cache_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_DATA_WRAPPER
CAMEL_IS_DATA_WRAPPER
-CAMEL_DATA_WRAPPER_TYPE
+CAMEL_TYPE_DATA_WRAPPER
CAMEL_DATA_WRAPPER_CLASS
+CAMEL_IS_DATA_WRAPPER_CLASS
+CAMEL_DATA_WRAPPER_GET_CLASS
CamelDataWrapperClass
<SUBSECTION Private>
+CamelDataWrapperPrivate
camel_data_wrapper_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_DISCO_DIARY
CAMEL_IS_DISCO_DIARY
-CAMEL_DISCO_DIARY_TYPE
+CAMEL_TYPE_DISCO_DIARY
CAMEL_DISCO_DIARY_CLASS
+CAMEL_IS_DISCO_DIARY_CLASS
+CAMEL_DISCO_DIARY_GET_CLASS
CamelDiscoDiaryClass
<SUBSECTION Private>
camel_disco_diary_get_type
<SUBSECTION Standard>
CAMEL_DISCO_FOLDER
CAMEL_IS_DISCO_FOLDER
-CAMEL_DISCO_FOLDER_TYPE
+CAMEL_TYPE_DISCO_FOLDER
CAMEL_DISCO_FOLDER_CLASS
+CAMEL_IS_DISCO_FOLDER_CLASS
+CAMEL_DISCO_FOLDER_GET_CLASS
CamelDiscoFolderClass
<SUBSECTION Private>
camel_disco_folder_get_type
</SECTION>
<SECTION>
+<FILE>camel-disco-store</FILE>
+<TITLE>CamelDiscoStore</TITLE>
+CamelDiscoStore
+CamelDiscoStoreStatus
+camel_disco_store_status
+camel_disco_store_set_status
+camel_disco_store_can_work_offline
+camel_disco_store_check_online
+camel_disco_store_prepare_for_offline
+<SUBSECTION Standard>
+CAMEL_DISCO_STORE
+CAMEL_IS_DISCO_STORE
+CAMEL_TYPE_DISCO_STORE
+CAMEL_DISCO_STORE_CLASS
+CAMEL_IS_DISCO_STORE_CLASS
+CAMEL_DISCO_STORE_GET_CLASS
+CamelDiscoStoreClass
+<SUBSECTION Private>
+camel_disco_store_get_type
+</SECTION>
+
+<SECTION>
<FILE>camel-filter-driver</FILE>
<TITLE>CamelFilterDriver</TITLE>
CamelFilterDriver
<SUBSECTION Standard>
CAMEL_FILTER_DRIVER
CAMEL_IS_FILTER_DRIVER
-CAMEL_FILTER_DRIVER_TYPE
+CAMEL_TYPE_FILTER_DRIVER
CAMEL_FILTER_DRIVER_CLASS
+CAMEL_IS_FILTER_DRIVER_CLASS
+CAMEL_FILTER_DRIVER_GET_CLASS
CamelFilterDriverClass
<SUBSECTION Private>
+CamelFilterDriverPrivate
camel_filter_driver_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_FOLDER
CAMEL_IS_FOLDER
-CAMEL_FOLDER_TYPE
+CAMEL_TYPE_FOLDER
CAMEL_FOLDER_CLASS
+CAMEL_IS_FOLDER_CLASS
+CAMEL_FOLDER_GET_CLASS
CamelFolderClass
<SUBSECTION Private>
+CamelFolderPrivate
camel_folder_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_FOLDER_SEARCH
CAMEL_IS_FOLDER_SEARCH
-CAMEL_FOLDER_SEARCH_TYPE
+CAMEL_TYPE_FOLDER_SEARCH
CAMEL_FOLDER_SEARCH_CLASS
+CAMEL_IS_FOLDER_SEARCH_CLASS
+CAMEL_FOLDER_SEARCH_GET_CLASS
CamelFolderSearchClass
<SUBSECTION Private>
+CamelFolderSearchPrivate
camel_folder_search_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_FOLDER_SUMMARY
CAMEL_IS_FOLDER_SUMMARY
-CAMEL_FOLDER_SUMMARY_TYPE
+CAMEL_TYPE_FOLDER_SUMMARY
CAMEL_FOLDER_SUMMARY_CLASS
+CAMEL_IS_FOLDER_SUMMARY_CLASS
+CAMEL_FOLDER_SUMMARY_GET_CLASS
CamelFolderSummaryClass
<SUBSECTION Private>
+CamelFolderSummaryPrivate
camel_folder_summary_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_GPG_CONTEXT
CAMEL_IS_GPG_CONTEXT
-CAMEL_GPG_CONTEXT_TYPE
+CAMEL_TYPE_GPG_CONTEXT
CAMEL_GPG_CONTEXT_CLASS
+CAMEL_IS_GPG_CONTEXT_CLASS
+CAMEL_GPG_CONTEXT_GET_CLASS
CamelGpgContextClass
<SUBSECTION Private>
+CamelGpgContextPrivate
camel_gpg_context_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_HTML_PARSER
CAMEL_IS_HTML_PARSER
+CAMEL_TYPE_HTML_PARSER
CAMEL_HTML_PARSER_CLASS
+CAMEL_IS_HTML_PARSER_CLASS
+CAMEL_HTML_PARSER_GET_CLASS
CamelHTMLParserClass
<SUBSECTION Private>
+CamelHTMLParserPrivate
camel_html_parser_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_HTTP_STREAM
CAMEL_IS_HTTP_STREAM
-CAMEL_HTTP_STREAM_TYPE
+CAMEL_TYPE_HTTP_STREAM
CAMEL_HTTP_STREAM_CLASS
+CAMEL_IS_HTTP_STREAM_CLASS
+CAMEL_HTTP_STREAM_GET_CLASS
CamelHttpStreamClass
<SUBSECTION Private>
camel_http_stream_get_type
camel_index_new
camel_index_construct
camel_index_rename
-camel_index_set_normalise
camel_index_sync
camel_index_compress
camel_index_delete
<SUBSECTION Standard>
CAMEL_INDEX
CAMEL_IS_INDEX
-camel_index_get_type
+CAMEL_TYPE_INDEX
CAMEL_INDEX_CLASS
+CAMEL_IS_INDEX_CLASS
+CAMEL_INDEX_GET_CLASS
CAMEL_INDEX_NAME
CAMEL_IS_INDEX_NAME
-camel_index_name_get_type
+CAMEL_TYPE_INDEX_NAME
CAMEL_INDEX_NAME_CLASS
+CAMEL_IS_INDEX_NAME_CLASS
+CAMEL_INDEX_NAME_GET_CLASS
CAMEL_INDEX_CURSOR
CAMEL_IS_INDEX_CURSOR
-camel_index_cursor_get_type
+CAMEL_TYPE_INDEX_CURSOR
CAMEL_INDEX_CURSOR_CLASS
+CAMEL_IS_INDEX_CURSOR_CLASS
+CAMEL_INDEX_CURSOR_GET_CLASS
CamelIndexClass
CamelIndexCursorClass
CamelIndexNameClass
<SUBSECTION Private>
+CamelIndexPrivate
+CamelIndexNamePrivate
+CamelIndexCursorPrivate
+camel_index_get_type
camel_index_name_get_type
+camel_index_cursor_get_type
</SECTION>
<SECTION>
<SUBSECTION Standard>
CAMEL_INTERNET_ADDRESS
CAMEL_IS_INTERNET_ADDRESS
+CAMEL_TYPE_INTERNET_ADDRESS
CAMEL_INTERNET_ADDRESS_CLASS
+CAMEL_IS_INTERNET_ADDRESS_CLASS
+CAMEL_INTERNET_ADDRESS_GET_CLASS
CamelInternetAddressClass
<SUBSECTION Private>
+CamelInternetAddressPrivate
camel_internet_address_get_type
</SECTION>
camel_medium_get_header
camel_medium_get_headers
camel_medium_free_headers
-camel_medium_get_content_object
-camel_medium_set_content_object
+camel_medium_get_content
+camel_medium_set_content
<SUBSECTION Standard>
CAMEL_MEDIUM
CAMEL_IS_MEDIUM
-CAMEL_MEDIUM_TYPE
+CAMEL_TYPE_MEDIUM
CAMEL_MEDIUM_CLASS
+CAMEL_IS_MEDIUM_CLASS
+CAMEL_MEDIUM_GET_CLASS
CamelMediumClass
<SUBSECTION Private>
+CamelMediumPrivate
camel_medium_get_type
</SECTION>
CamelMimeFilterBasic
CamelMimeFilterBasicType
camel_mime_filter_basic_new
-camel_mime_filter_basic_new_type
<SUBSECTION Standard>
CAMEL_MIME_FILTER_BASIC
CAMEL_IS_MIME_FILTER_BASIC
+CAMEL_TYPE_MIME_FILTER_BASIC
CAMEL_MIME_FILTER_BASIC_CLASS
+CAMEL_IS_MIME_FILTER_BASIC_CLASS
+CAMEL_MIME_FILTER_BASIC_GET_CLASS
CamelMimeFilterBasicClass
<SUBSECTION Private>
+CamelMimeFilterBasicPrivate
camel_mime_filter_basic_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_BESTENC
CAMEL_IS_MIME_FILTER_BESTENC
+CAMEL_TYPE_MIME_FILTER_BESTENC
CAMEL_MIME_FILTER_BESTENC_CLASS
+CAMEL_IS_MIME_FILTER_BESTENC_CLASS
+CAMEL_MIME_FILTER_BESTENC_GET_CLASS
CamelMimeFilterBestencClass
<SUBSECTION Private>
+CamelMimeFilterBestencPrivate
camel_mime_filter_bestenc_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_CANON
CAMEL_IS_MIME_FILTER_CANON
-CAMEL_MIME_FILTER_CANON_TYPE
+CAMEL_TYPE_MIME_FILTER_CANON
CAMEL_MIME_FILTER_CANON_CLASS
+CAMEL_IS_MIME_FILTER_CANON_CLASS
+CAMEL_MIME_FILTER_CANON_GET_CLASS
CamelMimeFilterCanonClass
<SUBSECTION Private>
+CamelMimeFilterCanonPrivate
camel_mime_filter_canon_get_type
</SECTION>
<TITLE>CamelMimeFilterCharset</TITLE>
CamelMimeFilterCharset
camel_mime_filter_charset_new
-camel_mime_filter_charset_new_convert
<SUBSECTION Standard>
CAMEL_MIME_FILTER_CHARSET
CAMEL_IS_MIME_FILTER_CHARSET
+CAMEL_TYPE_MIME_FILTER_CHARSET
CAMEL_MIME_FILTER_CHARSET_CLASS
+CAMEL_IS_MIME_FILTER_CHARSET_CLASS
+CAMEL_MIME_FILTER_CHARSET_GET_CLASS
CamelMimeFilterCharsetClass
<SUBSECTION Private>
+CamelMimeFilterCharsetPrivate
camel_mime_filter_charset_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_CRLF
CAMEL_IS_MIME_FILTER_CRLF
-CAMEL_MIME_FILTER_CRLF_TYPE
+CAMEL_TYPE_MIME_FILTER_CRLF
CAMEL_MIME_FILTER_CRLF_CLASS
+CAMEL_IS_MIME_FILTER_CRLF_CLASS
+CAMEL_MIME_FILTER_CRLF_GET_CLASS
CamelMimeFilterCRLFClass
<SUBSECTION Private>
+CamelMimeFilterCRLFPrivate
camel_mime_filter_crlf_get_type
</SECTION>
CAMEL_IS_MIME_FILTER_ENRICHED
CAMEL_TYPE_MIME_FILTER_ENRICHED
CAMEL_MIME_FILTER_ENRICHED_CLASS
+CAMEL_IS_MIME_FILTER_ENRICHED_CLASS
+CAMEL_MIME_FILTER_ENRICHED_GET_CLASS
CamelMimeFilterEnrichedClass
<SUBSECTION Private>
+CamelMimeFilterEnrichedPrivate
camel_mime_filter_enriched_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_FROM
CAMEL_IS_MIME_FILTER_FROM
+CAMEL_TYPE_MIME_FILTER_FROM
CAMEL_MIME_FILTER_FROM_CLASS
+CAMEL_IS_MIME_FILTER_FROM_CLASS
+CAMEL_MIME_FILTER_FROM_GET_CLASS
CamelMimeFilterFromClass
<SUBSECTION Private>
+CamelMimeFilterFromPrivate
camel_mime_filter_from_get_type
</SECTION>
CAMEL_MIME_FILTER_GZIP_GET_CLASS
CamelMimeFilterGZipClass
<SUBSECTION Private>
+CamelMimeFilterGZipPrivate
camel_mime_filter_gzip_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_HTML
CAMEL_IS_MIME_FILTER_HTML
+CAMEL_TYPE_MIME_FILTER_HTML
CAMEL_MIME_FILTER_HTML_CLASS
+CAMEL_IS_MIME_FILTER_HTML_CLASS
+CAMEL_MIME_FILTER_HTML_GET_CLASS
CamelMimeFilterHTMLClass
<SUBSECTION Private>
+CamelMimeFilterHTMLPrivate
camel_mime_filter_html_get_type
</SECTION>
<TITLE>CamelMimeFilterIndex</TITLE>
CamelMimeFilterIndex
camel_mime_filter_index_new
-camel_mime_filter_index_new_index
camel_mime_filter_index_set_name
camel_mime_filter_index_set_index
<SUBSECTION Standard>
CAMEL_MIME_FILTER_INDEX
CAMEL_IS_MIME_FILTER_INDEX
+CAMEL_TYPE_MIME_FILTER_INDEX
CAMEL_MIME_FILTER_INDEX_CLASS
+CAMEL_IS_MIME_FILTER_INDEX_CLASS
+CAMEL_MIME_FILTER_INDEX_GET_CLASS
CamelMimeFilterIndexClass
<SUBSECTION Private>
+CamelMimeFilterIndexPrivate
camel_mime_filter_index_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_LINEWRAP
CAMEL_IS_MIME_FILTER_LINEWRAP
-CAMEL_MIME_FILTER_LINEWRAP_TYPE
+CAMEL_TYPE_MIME_FILTER_LINEWRAP
CAMEL_MIME_FILTER_LINEWRAP_CLASS
+CAMEL_IS_MIME_FILTER_LINEWRAP_CLASS
+CAMEL_MIME_FILTER_LINEWRAP_GET_CLASS
CamelMimeFilterLinewrapClass
<SUBSECTION Private>
+CamelMimeFilterLinewrapPrivate
camel_mime_filter_linewrap_get_type
</SECTION>
CamelMimeFilterPgp
camel_mime_filter_pgp_new
<SUBSECTION Standard>
-CAMEL_MIME_FILTER_PGP_TYPE
CAMEL_MIME_FILTER_PGP
-CAMEL_MIME_FILTER_PGP_CLASS
CAMEL_IS_MIME_FILTER_PGP
+CAMEL_TYPE_MIME_FILTER_PGP
+CAMEL_MIME_FILTER_PGP_CLASS
+CAMEL_IS_MIME_FILTER_PGP_CLASS
+CAMEL_MIME_FILTER_PGP_GET_CLASS
CamelMimeFilterPgpClass
<SUBSECTION Private>
+CamelMimeFilterPgpPrivate
camel_mime_filter_pgp_get_type
</SECTION>
<TITLE>CamelMimeFilterSave</TITLE>
CamelMimeFilterSave
camel_mime_filter_save_new
-camel_mime_filter_save_new_with_stream
<SUBSECTION Standard>
CAMEL_MIME_FILTER_SAVE
CAMEL_IS_MIME_FILTER_SAVE
-CAMEL_MIME_FILTER_SAVE_TYPE
+CAMEL_TYPE_MIME_FILTER_SAVE
CAMEL_MIME_FILTER_SAVE_CLASS
+CAMEL_IS_MIME_FILTER_SAVE_CLASS
+CAMEL_MIME_FILTER_SAVE_GET_CLASS
CamelMimeFilterSaveClass
<SUBSECTION Private>
+CamelMimeFilterSavePrivate
camel_mime_filter_save_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_TOHTML
CAMEL_IS_MIME_FILTER_TOHTML
+CAMEL_TYPE_MIME_FILTER_TOHTML
CAMEL_MIME_FILTER_TOHTML_CLASS
+CAMEL_IS_MIME_FILTER_TOHTML_CLASS
+CAMEL_MIME_FILTER_TOHTML_GET_CLASS
CamelMimeFilterToHTMLClass
<SUBSECTION Private>
+CamelMimeFilterToHTMLPrivate
camel_mime_filter_tohtml_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER_WINDOWS
CAMEL_IS_MIME_FILTER_WINDOWS
+CAMEL_TYPE_MIME_FILTER_WINDOWS
CAMEL_MIME_FILTER_WINDOWS_CLASS
+CAMEL_IS_MIME_FILTER_WINDOWS_CLASS
+CAMEL_MIME_FILTER_WINDOWS_GET_CLASS
CamelMimeFilterWindowsClass
<SUBSECTION Private>
+CamelMimeFilterWindowsPrivate
camel_mime_filter_windows_get_type
</SECTION>
CAMEL_MIME_FILTER_YENC_GET_CLASS
CamelMimeFilterYencClass
<SUBSECTION Private>
+CamelMimeFilterYencPrivate
camel_mime_filter_yenc_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_FILTER
CAMEL_IS_MIME_FILTER
-CAMEL_MIME_FILTER_TYPE
+CAMEL_TYPE_MIME_FILTER
CAMEL_MIME_FILTER_CLASS
+CAMEL_IS_MIME_FILTER_CLASS
+CAMEL_MIME_FILTER_GET_CLASS
CamelMimeFilterClass
<SUBSECTION Private>
+CamelMimeFilterPrivate
camel_mime_filter_get_type
</SECTION>
camel_mime_filter_progress_new
<SUBSECTION Standard>
CAMEL_MIME_FILTER_PROGRESS
-CAMEL_MIME_FILTER_PROGRESS_CLASS
CAMEL_IS_MIME_FILTER_PROGRESS
+CAMEL_TYPE_MIME_FILTER_PROGRESS
+CAMEL_MIME_FILTER_PROGRESS_CLASS
+CAMEL_IS_MIME_FILTER_PROGRESS_CLASS
+CAMEL_MIME_FILTER_PROGRESS_GET_CLASS
CamelMimeFilterProgressClass
<SUBSECTION Private>
+CamelMimeFilterProgressPrivate
camel_mime_filter_progress_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MIME_MESSAGE
CAMEL_IS_MIME_MESSAGE
-CAMEL_MIME_MESSAGE_TYPE
+CAMEL_TYPE_MIME_MESSAGE
CAMEL_MIME_MESSAGE_CLASS
+CAMEL_IS_MIME_MESSAGE_CLASS
+CAMEL_MIME_MESSAGE_GET_CLASS
CamelMimeMessageClass
<SUBSECTION Private>
camel_mime_message_get_type
<SUBSECTION Standard>
CAMEL_MIME_PARSER
CAMEL_IS_MIME_PARSER
+CAMEL_TYPE_MIME_PARSER
CAMEL_MIME_PARSER_CLASS
+CAMEL_IS_MIME_PARSER_CLASS
+CAMEL_MIME_PARSER_GET_CLASS
CamelMimeParserClass
<SUBSECTION Private>
+CamelMimeParserPrivate
camel_mime_parser_get_type
</SECTION>
camel_mime_part_get_filename
camel_mime_part_set_content_id
camel_mime_part_get_content_id
-camel_mime_part_set_content_MD5
-camel_mime_part_get_content_MD5
+camel_mime_part_set_content_md5
+camel_mime_part_get_content_md5
camel_mime_part_set_content_location
camel_mime_part_get_content_location
camel_mime_part_set_encoding
<SUBSECTION Standard>
CAMEL_MIME_PART
CAMEL_IS_MIME_PART
-CAMEL_MIME_PART_TYPE
+CAMEL_TYPE_MIME_PART
CAMEL_MIME_PART_CLASS
+CAMEL_IS_MIME_PART_CLASS
+CAMEL_MIME_PART_GET_CLASS
CamelMimePartClass
<SUBSECTION Private>
+CamelMimePartPrivate
camel_mime_part_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_MULTIPART_ENCRYPTED
CAMEL_IS_MULTIPART_ENCRYPTED
-CAMEL_MULTIPART_ENCRYPTED_TYPE
+CAMEL_TYPE_MULTIPART_ENCRYPTED
CAMEL_MULTIPART_ENCRYPTED_CLASS
+CAMEL_IS_MULTIPART_ENCRYPTED_CLASS
+CAMEL_MULTIPART_ENCRYPTED_GET_CLASS
CamelMultipartEncryptedClass
<SUBSECTION Private>
camel_multipart_encrypted_get_type
<SUBSECTION Standard>
CAMEL_MULTIPART_SIGNED
CAMEL_IS_MULTIPART_SIGNED
-CAMEL_MULTIPART_SIGNED_TYPE
+CAMEL_TYPE_MULTIPART_SIGNED
CAMEL_MULTIPART_SIGNED_CLASS
+CAMEL_IS_MULTIPART_SIGNED_CLASS
+CAMEL_MULTIPART_SIGNED_GET_CLASS
CamelMultipartSignedClass
<SUBSECTION Private>
camel_multipart_signed_get_type
<SUBSECTION Standard>
CAMEL_MULTIPART
CAMEL_IS_MULTIPART
-CAMEL_MULTIPART_TYPE
+CAMEL_TYPE_MULTIPART
CAMEL_MULTIPART_CLASS
+CAMEL_IS_MULTIPART_CLASS
+CAMEL_MULTIPART_GET_CLASS
CamelMultipartClass
<SUBSECTION Private>
camel_multipart_get_type
</SECTION>
<SECTION>
+<FILE>camel-nntp-address</FILE>
+<TITLE>CamelNNTPAddress</TITLE>
+CamelNNTPAddress
+camel_nntp_address_new
+camel_nntp_address_add
+camel_nntp_address_get
+<SUBSECTION Standard>
+CAMEL_NNTP_ADDRESS
+CAMEL_IS_NNTP_ADDRESS
+CAMEL_TYPE_NNTP_ADDRESS
+CAMEL_NNTP_ADDRESS_CLASS
+CAMEL_IS_NNTP_ADDRESS_CLASS
+CAMEL_NNTP_ADDRESS_GET_CLASS
+CamelNNTPAddressClass
+<SUBSECTION Private>
+CamelNNTPAddressPrivate
+camel_nntp_address_get_type
+</SECTION>
+
+<SECTION>
<FILE>camel-object</FILE>
<TITLE>CamelObject</TITLE>
-CAMEL_OBJECT_TRACK_INSTANCES
-CamelType
CamelObject
-CAMEL_CHECK_CAST
-CAMEL_CHECK_CLASS_CAST
-CAMEL_CHECK_TYPE
-CAMEL_CHECK_CLASS_TYPE
-camel_object_type
-CAMEL_OBJECT_TYPE
-CAMEL_OBJECT_GET_TYPE
CamelObjectHookID
-CamelObjectClassInitFunc
-CamelObjectClassFinalizeFunc
-CamelObjectInitFunc
-CamelObjectFinalizeFunc
CamelObjectEventPrepFunc
CamelObjectEventHookFunc
-CAMEL_INVALID_TYPE
-CamelObjectFlags
-camel_type_init
-camel_type_register
-camel_type_get_global_classfuncs
-camel_type_to_name
-camel_name_to_type
camel_object_class_add_event
-camel_object_class_dump_tree
-camel_object_cast
-camel_object_is
-camel_object_class_cast
-camel_object_class_is
-camel_object_new
-camel_object_ref
-camel_object_unref
camel_object_hook_event
camel_object_remove_event
camel_object_unhook_event
<SUBSECTION Standard>
CAMEL_OBJECT
CAMEL_IS_OBJECT
+CAMEL_TYPE_OBJECT
CAMEL_OBJECT_CLASS
CAMEL_IS_OBJECT_CLASS
CAMEL_OBJECT_GET_CLASS
</SECTION>
<SECTION>
+<FILE>camel-offline-folder</FILE>
+<TITLE>CamelOfflineFolder</TITLE>
+CamelOfflineFolder
+camel_offline_folder_downsync
+<SUBSECTION Standard>
+CAMEL_OFFLINE_FOLDER
+CAMEL_IS_OFFLINE_FOLDER
+CAMEL_TYPE_OFFLINE_FOLDER
+CAMEL_OFFLINE_FOLDER_CLASS
+CAMEL_IS_OFFLINE_FOLDER_CLASS
+CAMEL_OFFLINE_FOLDER_GET_CLASS
+CamelOfflineFolderClass
+<SUBSECTION Private>
+camel_offline_folder_get_type
+</SECTION>
+
+<SECTION>
+<FILE>camel-offline-journal</FILE>
+<TITLE>CamelOfflineJournal</TITLE>
+CamelOfflineJournal
+CamelOfflineJournalEntry
+camel_offline_journal_construct
+camel_offline_journal_set_filename
+camel_offline_journal_write
+camel_offline_journal_replay
+<SUBSECTION Standard>
+CAMEL_OFFLINE_JOURNAL
+CAMEL_IS_OFFLINE_JOURNAL
+CAMEL_TYPE_OFFLINE_JOURNAL
+CAMEL_OFFLINE_JOURNAL_CLASS
+CAMEL_IS_OFFLINE_JOURNAL_CLASS
+CAMEL_OFFLINE_JOURNAL_GET_CLASS
+CamelOfflineJournalClass
+<SUBSECTION Private>
+camel_offline_journal_get_type
+</SECTION>
+
+<SECTION>
+<FILE>camel-offline-store</FILE>
+<TITLE>CamelOfflineStore</TITLE>
+CamelOfflineStore
+camel_offline_store_set_network_state
+camel_offline_store_get_network_state
+camel_offline_store_prepare_for_offline
+<SUBSECTION Standard>
+CAMEL_OFFLINE_STORE
+CAMEL_IS_OFFLINE_STORE
+CAMEL_TYPE_OFFLINE_STORE
+CAMEL_OFFLINE_STORE_CLASS
+CAMEL_IS_OFFLINE_STORE_CLASS
+CAMEL_OFFLINE_STORE_GET_CLASS
+CamelOfflineStoreClass
+<SUBSECTION Private>
+camel_offline_store_get_type
+</SECTION>
+
+<SECTION>
+<FILE>camel-partition-table</FILE>
+<TITLE>CamelPartitionTable</TITLE>
+<TITLE>CamelKeyTable</TITLE>
+camel_hash_t
+CamelPartitionKey
+CamelPartitionKeyBlock
+CamelPartitionMap
+CamelPartitionMapBlock
+CamelPartitionTable
+camel_partition_table_new
+camel_partition_table_sync
+camel_partition_table_add
+camel_partition_table_lookup
+camel_partition_table_remove
+CamelKeyBlock
+CamelKeyRootBlock
+CamelKeyKey
+CAMEL_KEY_TABLE_MAX_KEY
+CamelKeyTable
+camel_key_table_new
+camel_key_table_sync
+camel_key_table_add
+camel_key_table_set_data
+camel_key_table_set_flags
+camel_key_table_lookup
+camel_key_table_next
+<SUBSECTION Standard>
+CAMEL_PARTITION_TABLE
+CAMEL_IS_PARTITION_TABLE
+CAMEL_TYPE_PARTITION_TABLE
+CAMEL_PARTITION_TABLE_CLASS
+CAMEL_IS_PARTITION_TABLE_CLASS
+CAMEL_PARTITION_TABLE_GET_CLASS
+CAMEL_KEY_TABLE
+CAMEL_IS_KEY_TABLE
+CAMEL_TYPE_KEY_TABLE
+CAMEL_KEY_TABLE_CLASS
+CAMEL_IS_KEY_TABLE_CLASS
+CAMEL_KEY_TABLE_GET_CLASS
+CamelPartitionTableClass
+CamelKeyTableClass
+<SUBSECTION Private>
+CamelPartitionTablePrivate
+CamelKeyTablePrivate
+camel_partition_table_get_type
+camel_key_table_get_type
+</SECTION>
+
+<SECTION>
<FILE>camel-provider</FILE>
CamelProvider
CamelProviderType
<SUBSECTION Standard>
CAMEL_SASL_ANONYMOUS
CAMEL_IS_SASL_ANONYMOUS
-CAMEL_SASL_ANONYMOUS_TYPE
+CAMEL_TYPE_SASL_ANONYMOUS
CAMEL_SASL_ANONYMOUS_CLASS
+CAMEL_IS_SASL_ANONYMOUS_CLASS
+CAMEL_SASL_ANONYMOUS_GET_CLASS
CamelSaslAnonymousClass
<SUBSECTION Private>
camel_sasl_anonymous_get_type
<SUBSECTION Standard>
CAMEL_SASL_CRAM_MD5
CAMEL_IS_SASL_CRAM_MD5
-CAMEL_SASL_CRAM_MD5_TYPE
+CAMEL_TYPE_SASL_CRAM_MD5
CAMEL_SASL_CRAM_MD5_CLASS
+CAMEL_IS_SASL_CRAM_MD5_CLASS
+CAMEL_SASL_CRAM_MD5_GET_CLASS
CamelSaslCramMd5Class
<SUBSECTION Private>
+CamelSaslCramMd5Private
camel_sasl_cram_md5_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SASL_DIGEST_MD5
CAMEL_IS_SASL_DIGEST_MD5
-CAMEL_SASL_DIGEST_MD5_TYPE
+CAMEL_TYPE_SASL_DIGEST_MD5
CAMEL_SASL_DIGEST_MD5_CLASS
+CAMEL_IS_SASL_DIGEST_MD5_CLASS
+CAMEL_SASL_DIGEST_MD5_GET_CLASS
CamelSaslDigestMd5Class
<SUBSECTION Private>
+CamelSaslDigestMd5Private
camel_sasl_digest_md5_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SASL_GSSAPI
CAMEL_IS_SASL_GSSAPI
-CAMEL_SASL_GSSAPI_TYPE
+CAMEL_TYPE_SASL_GSSAPI
CAMEL_SASL_GSSAPI_CLASS
+CAMEL_IS_SASL_GSSAPI_CLASS
+CAMEL_SASL_GSSAPI_GET_CLASS
CamelSaslGssapiClass
<SUBSECTION Private>
+CamelSaslGssapiPrivate
camel_sasl_gssapi_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SASL_LOGIN
CAMEL_IS_SASL_LOGIN
-CAMEL_SASL_LOGIN_TYPE
+CAMEL_TYPE_SASL_LOGIN
CAMEL_SASL_LOGIN_CLASS
+CAMEL_IS_SASL_LOGIN_CLASS
+CAMEL_SASL_LOGIN_GET_CLASS
CamelSaslLoginClass
<SUBSECTION Private>
+CamelSaslLoginPrivate
camel_sasl_login_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SASL_NTLM
CAMEL_IS_SASL_NTLM
-CAMEL_SASL_NTLM_TYPE
+CAMEL_TYPE_SASL_NTLM
CAMEL_SASL_NTLM_CLASS
+CAMEL_IS_SASL_NTLM_CLASS
+CAMEL_SASL_NTLM_GET_CLASS
CamelSaslNTLMClass
<SUBSECTION Private>
+CamelSaslNTLMPrivate
camel_sasl_ntlm_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SASL_PLAIN
CAMEL_IS_SASL_PLAIN
-CAMEL_SASL_PLAIN_TYPE
+CAMEL_TYPE_SASL_PLAIN
CAMEL_SASL_PLAIN_CLASS
+CAMEL_IS_SASL_PLAIN_CLASS
+CAMEL_SASL_PLAIN_GET_CLASS
CamelSaslPlainClass
<SUBSECTION Private>
+CamelSaslPlainPrivate
camel_sasl_plain_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SASL_POPB4SMTP
CAMEL_IS_SASL_POPB4SMTP
-CAMEL_SASL_POPB4SMTP_TYPE
+CAMEL_TYPE_SASL_POPB4SMTP
CAMEL_SASL_POPB4SMTP_CLASS
+CAMEL_IS_SASL_POPB4SMTP_CLASS
+CAMEL_SASL_POPB4SMTP_GET_CLASS
CamelSaslPOPB4SMTPClass
<SUBSECTION Private>
+CamelSaslPOPB4SMTPPrivate
camel_sasl_popb4smtp_get_type
</SECTION>
CamelSasl
camel_sasl_challenge
camel_sasl_challenge_base64
-camel_sasl_authenticated
camel_sasl_new
camel_sasl_authtype_list
camel_sasl_authtype
<SUBSECTION Standard>
CAMEL_SASL
CAMEL_IS_SASL
-CAMEL_SASL_TYPE
+CAMEL_TYPE_SASL
CAMEL_SASL_CLASS
+CAMEL_IS_SASL_CLASS
+CAMEL_SASL_GET_CLASS
CamelSaslClass
<SUBSECTION Private>
+CamelSaslPrivate
camel_sasl_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SEEKABLE_STREAM
CAMEL_IS_SEEKABLE_STREAM
-CAMEL_SEEKABLE_STREAM_TYPE
+CAMEL_TYPE_SEEKABLE_STREAM
CAMEL_SEEKABLE_STREAM_CLASS
+CAMEL_IS_SEEKABLE_STREAM_CLASS
+CAMEL_SEEKABLE_STREAM_GET_CLASS
CamelSeekableStreamClass
<SUBSECTION Private>
camel_seekable_stream_get_type
<SUBSECTION Standard>
CAMEL_SEEKABLE_SUBSTREAM
CAMEL_IS_SEEKABLE_SUBSTREAM
-CAMEL_SEEKABLE_SUBSTREAM_TYPE
+CAMEL_TYPE_SEEKABLE_SUBSTREAM
CAMEL_SEEKABLE_SUBSTREAM_CLASS
+CAMEL_IS_SEEKABLE_SUBSTREAM_CLASS
+CAMEL_SEEKABLE_SUBSTREAM_GET_CLASS
CamelSeekableSubstreamClass
<SUBSECTION Private>
camel_seekable_substream_get_type
<SUBSECTION Standard>
CAMEL_SERVICE
CAMEL_IS_SERVICE
-CAMEL_SERVICE_TYPE
+CAMEL_TYPE_SERVICE
CAMEL_SERVICE_CLASS
+CAMEL_IS_SERVICE_CLASS
+CAMEL_SERVICE_GET_CLASS
CamelServiceClass
<SUBSECTION Private>
+CamelServicePrivate
camel_service_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SESSION
CAMEL_IS_SESSION
-CAMEL_SESSION_TYPE
+CAMEL_TYPE_SESSION
CAMEL_SESSION_CLASS
+CAMEL_IS_SESSION_CLASS
+CAMEL_SESSION_GET_CLASS
CamelSessionClass
<SUBSECTION Private>
+CamelSessionPrivate
camel_session_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_SMIME_CONTEXT
CAMEL_IS_SMIME_CONTEXT
-CAMEL_SMIME_CONTEXT_TYPE
+CAMEL_TYPE_SMIME_CONTEXT
CAMEL_SMIME_CONTEXT_CLASS
+CAMEL_IS_SMIME_CONTEXT_CLASS
+CAMEL_SMIME_CONTEXT_GET_CLASS
CamelSMIMEContextClass
<SUBSECTION Private>
+CamelSMIMEContextPrivate
camel_smime_context_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_STORE_SUMMARY
CAMEL_IS_STORE_SUMMARY
+CAMEL_TYPE_STORE_SUMMARY
CAMEL_STORE_SUMMARY_CLASS
+CAMEL_IS_STORE_SUMMARY_CLASS
+CAMEL_STORE_SUMMARY_GET_CLASS
CamelStoreSummaryClass
<SUBSECTION Private>
+CamelStoreSummaryPrivate
camel_store_summary_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_STORE
CAMEL_IS_STORE
-CAMEL_STORE_TYPE
+CAMEL_TYPE_STORE
CAMEL_STORE_CLASS
+CAMEL_IS_STORE_CLASS
+CAMEL_STORE_GET_CLASS
CamelStoreClass
<SUBSECTION Private>
+CamelStorePrivate
camel_isubscribe_get_type
camel_store_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_STREAM
CAMEL_IS_STREAM
-CAMEL_STREAM_TYPE
+CAMEL_TYPE_STREAM
CAMEL_STREAM_CLASS
+CAMEL_IS_STREAM_CLASS
+CAMEL_STREAM_GET_CLASS
CamelStreamClass
<SUBSECTION Private>
camel_stream_get_type
<SUBSECTION Standard>
CAMEL_STREAM_BUFFER
CAMEL_IS_STREAM_BUFFER
-CAMEL_STREAM_BUFFER_TYPE
+CAMEL_TYPE_STREAM_BUFFER
CAMEL_STREAM_BUFFER_CLASS
+CAMEL_IS_STREAM_BUFFER_CLASS
+CAMEL_STREAM_BUFFER_GET_CLASS
CamelStreamBufferClass
<SUBSECTION Private>
+CamelStreamBufferPrivate
camel_stream_buffer_get_type
</SECTION>
<FILE>camel-stream-filter</FILE>
<TITLE>CamelStreamFilter</TITLE>
CamelStreamFilter
-camel_stream_filter_new_with_stream
camel_stream_filter_add
camel_stream_filter_remove
<SUBSECTION Standard>
CAMEL_STREAM_FILTER
CAMEL_IS_STREAM_FILTER
+CAMEL_TYPE_STREAM_FILTER
CAMEL_STREAM_FILTER_CLASS
+CAMEL_IS_STREAM_FILTER_CLASS
+CAMEL_STREAM_FILTER_GET_CLASS
CamelStreamFilterClass
<SUBSECTION Private>
+CamelStreamFilterPrivate
camel_stream_filter_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_STREAM_FS
CAMEL_IS_STREAM_FS
-CAMEL_STREAM_FS_TYPE
+CAMEL_TYPE_STREAM_FS
CAMEL_STREAM_FS_CLASS
+CAMEL_IS_STREAM_FS_CLASS
+CAMEL_STREAM_FS_GET_CLASS
CamelStreamFsClass
<SUBSECTION Private>
+CamelStreamFsPrivate
camel_stream_fs_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_STREAM_MEM
CAMEL_IS_STREAM_MEM
-CAMEL_STREAM_MEM_TYPE
+CAMEL_TYPE_STREAM_MEM
CAMEL_STREAM_MEM_CLASS
+CAMEL_IS_STREAM_MEM_CLASS
+CAMEL_STREAM_MEM_GET_CLASS
CamelStreamMemClass
<SUBSECTION Private>
+CamelStreamMemPrivate
camel_stream_mem_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_STREAM_NULL
CAMEL_IS_STREAM_NULL
+CAMEL_TYPE_STREAM_NULL
CAMEL_STREAM_NULL_CLASS
+CAMEL_IS_STREAM_NULL_CLASS
+CAMEL_STREAM_NULL_GET_CLASS
CamelStreamNullClass
<SUBSECTION Private>
camel_stream_null_get_type
<SUBSECTION Standard>
CAMEL_STREAM_PROCESS
CAMEL_IS_STREAM_PROCESS
+CAMEL_TYPE_STREAM_PROCESS
CAMEL_STREAM_PROCESS_CLASS
+CAMEL_IS_STREAM_PROCESS_CLASS
+CAMEL_STREAM_PROCESS_GET_CLASS
CamelStreamProcessClass
<SUBSECTION Private>
camel_stream_process_get_type
camel_stream_vfs_new_with_stream
camel_stream_vfs_is_writable
<SUBSECTION Standard>
-CAMEL_STREAM_VFS_TYPE
CAMEL_STREAM_VFS
-CAMEL_STREAM_VFS_CLASS
CAMEL_IS_STREAM_VFS
+CAMEL_TYPE_STREAM_VFS
+CAMEL_STREAM_VFS_CLASS
+CAMEL_IS_STREAM_VFS_CLASS
+CAMEL_STREAM_VFS_GET_CLASS
CamelStreamVFSClass
<SUBSECTION Private>
camel_stream_vfs_get_type
<SUBSECTION Standard>
CAMEL_TCP_STREAM_RAW
CAMEL_IS_TCP_STREAM_RAW
-CAMEL_TCP_STREAM_RAW_TYPE
+CAMEL_TYPE_TCP_STREAM_RAW
CAMEL_TCP_STREAM_RAW_CLASS
+CAMEL_IS_TCP_STREAM_RAW_CLASS
+CAMEL_TCP_STREAM_RAW_GET_CLASS
CamelTcpStreamRawClass
<SUBSECTION Private>
camel_tcp_stream_raw_get_type
<SUBSECTION Standard>
CAMEL_TCP_STREAM_SSL
CAMEL_IS_TCP_STREAM_SSL
-CAMEL_TCP_STREAM_SSL_TYPE
+CAMEL_TYPE_TCP_STREAM_SSL
CAMEL_TCP_STREAM_SSL_CLASS
+CAMEL_IS_TCP_STREAM_SSL_CLASS
+CAMEL_TCP_STREAM_SSL_GET_CLASS
CamelTcpStreamSSLClass
<SUBSECTION Private>
+CamelTcpStreamSSLPrivate
camel_tcp_stream_ssl_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_TCP_STREAM
CAMEL_IS_TCP_STREAM
-CAMEL_TCP_STREAM_TYPE
+CAMEL_TYPE_TCP_STREAM
CAMEL_TCP_STREAM_CLASS
+CAMEL_IS_TCP_STREAM_CLASS
+CAMEL_TCP_STREAM_GET_CLASS
CamelTcpStreamClass
<SUBSECTION Private>
camel_tcp_stream_get_type
<SUBSECTION Standard>
CAMEL_TEXT_INDEX
CAMEL_IS_TEXT_INDEX
+CAMEL_TYPE_TEXT_INDEX
CAMEL_TEXT_INDEX_CLASS
+CAMEL_IS_TEXT_INDEX_CLASS
+CAMEL_TEXT_INDEX_GET_CLASS
+CAMEL_TEXT_INDEX_CURSOR
+CAMEL_IS_TEXT_INDEX_CURSOR
+CAMEL_TYPE_TEXT_INDEX_CURSOR
+CAMEL_TEXT_INDEX_CURSOR_CLASS
+CAMEL_IS_TEXT_INDEX_CURSOR_CLASS
+CAMEL_TEXT_INDEX_CURSOR_GET_CLASS
+CAMEL_TEXT_INDEX_KEY_CURSOR
+CAMEL_IS_TEXT_INDEX_KEY_CURSOR
+CAMEL_TYPE_TEXT_INDEX_KEY_CURSOR
+CAMEL_TEXT_INDEX_KEY_CURSOR_CLASS
+CAMEL_IS_TEXT_INDEX_KEY_CURSOR_CLASS
+CAMEL_TEXT_INDEX_KEY_CURSOR_GET_CLASS
+CAMEL_TEXT_INDEX_NAME
+CAMEL_IS_TEXT_INDEX_NAME
+CAMEL_TYPE_TEXT_INDEX_NAME
+CAMEL_TEXT_INDEX_NAME_CLASS
+CAMEL_IS_TEXT_INDEX_NAME_CLASS
+CAMEL_TEXT_INDEX_NAME_GET_CLASS
CamelTextIndexClass
CamelTextIndexCursorClass
CamelTextIndexKeyCursorClass
CamelTextIndexNameClass
<SUBSECTION Private>
+CamelTextIndexPrivate
+CamelTextIndexCursorPrivate
+CamelTextIndexKeyCursorPrivate
+CamelTextIndexNamePrivate
camel_text_index_get_type
camel_text_index_cursor_get_type
camel_text_index_key_cursor_get_type
<SUBSECTION Standard>
CAMEL_TRANSPORT
CAMEL_IS_TRANSPORT
-CAMEL_TRANSPORT_TYPE
+CAMEL_TYPE_TRANSPORT
CAMEL_TRANSPORT_CLASS
+CAMEL_IS_TRANSPORT_CLASS
+CAMEL_TRANSPORT_GET_CLASS
CamelTransportClass
<SUBSECTION Private>
+CamelTransportPrivate
camel_transport_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_VEE_FOLDER
CAMEL_IS_VEE_FOLDER
+CAMEL_TYPE_VEE_FOLDER
CAMEL_VEE_FOLDER_CLASS
+CAMEL_IS_VEE_FOLDER_CLASS
+CAMEL_VEE_FOLDER_GET_CLASS
CamelVeeFolderClass
<SUBSECTION Private>
+CamelVeeFolderPrivate
camel_vee_folder_get_type
</SECTION>
<SUBSECTION Standard>
CAMEL_VEE_STORE
CAMEL_IS_VEE_STORE
+CAMEL_TYPE_VEE_STORE
CAMEL_VEE_STORE_CLASS
+CAMEL_IS_VEE_STORE_CLASS
+CAMEL_VEE_STORE_GET_CLASS
CamelVeeStoreClass
<SUBSECTION Private>
camel_vee_store_get_type
<SUBSECTION Standard>
CAMEL_VEE_SUMMARY
CAMEL_IS_VEE_SUMMARY
+CAMEL_TYPE_VEE_SUMMARY
CAMEL_VEE_SUMMARY_CLASS
+CAMEL_IS_VEE_SUMMARY_CLASS
+CAMEL_VEE_SUMMARY_GET_CLASS
CamelVeeSummaryClass
<SUBSECTION Private>
camel_vee_summary_get_type
<SUBSECTION Standard>
CAMEL_VTRASH_FOLDER
CAMEL_IS_VTRASH_FOLDER
+CAMEL_TYPE_VTRASH_FOLDER
CAMEL_VTRASH_FOLDER_CLASS
+CAMEL_IS_VTRASH_FOLDER_CLASS
+CAMEL_VTRASH_FOLDER_GET_CLASS
CamelVTrashFolderClass
<SUBSECTION Private>
camel_vtrash_folder_get_type
</SECTION>
<SECTION>
-<FILE>camel-disco-store</FILE>
-<TITLE>CamelDiscoStore</TITLE>
-CamelDiscoStore
-CamelDiscoStoreStatus
-camel_disco_store_status
-camel_disco_store_set_status
-camel_disco_store_can_work_offline
-camel_disco_store_check_online
-camel_disco_store_prepare_for_offline
-<SUBSECTION Standard>
-CAMEL_DISCO_STORE
-CAMEL_IS_DISCO_STORE
-CAMEL_DISCO_STORE_TYPE
-CAMEL_DISCO_STORE_CLASS
-CamelDiscoStoreClass
-<SUBSECTION Private>
-camel_disco_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-offline-journal</FILE>
-<TITLE>CamelOfflineJournal</TITLE>
-CamelOfflineJournal
-CamelOfflineJournalEntry
-camel_offline_journal_construct
-camel_offline_journal_set_filename
-camel_offline_journal_write
-camel_offline_journal_replay
-<SUBSECTION Standard>
-CAMEL_OFFLINE_JOURNAL
-CAMEL_IS_OFFLINE_JOURNAL
-CAMEL_TYPE_OFFLINE_JOURNAL
-CAMEL_OFFLINE_JOURNAL_CLASS
-CAMEL_IS_OFFLINE_JOURNAL_CLASS
-CAMEL_OFFLINE_JOURNAL_GET_CLASS
-CamelOfflineJournalClass
-<SUBSECTION Private>
-camel_offline_journal_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-offline-folder</FILE>
-<TITLE>CamelOfflineFolder</TITLE>
-CamelOfflineFolder
-camel_offline_folder_downsync
-<SUBSECTION Standard>
-CAMEL_OFFLINE_FOLDER
-CAMEL_IS_OFFLINE_FOLDER
-CAMEL_OFFLINE_FOLDER_TYPE
-CAMEL_OFFLINE_FOLDER_CLASS
-CamelOfflineFolderClass
-<SUBSECTION Private>
-camel_offline_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-offline-store</FILE>
-<TITLE>CamelOfflineStore</TITLE>
-CamelOfflineStore
-camel_offline_store_set_network_state
-camel_offline_store_get_network_state
-camel_offline_store_prepare_for_offline
-<SUBSECTION Standard>
-CAMEL_OFFLINE_STORE
-CAMEL_IS_OFFLINE_STORE
-CAMEL_TYPE_OFFLINE_STORE
-CAMEL_OFFLINE_STORE_CLASS
-CAMEL_IS_OFFLINE_STORE_CLASS
-CAMEL_OFFLINE_STORE_GET_CLASS
-CamelOfflineStoreClass
-<SUBSECTION Private>
-camel_offline_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-address</FILE>
-<TITLE>CamelNNTPAddress</TITLE>
-CamelNNTPAddress
-camel_nntp_address_new
-camel_nntp_address_add
-camel_nntp_address_get
-<SUBSECTION Standard>
-CAMEL_NNTP_ADDRESS
-CAMEL_IS_NNTP_ADDRESS
-CAMEL_NNTP_ADDRESS_CLASS
-CamelNNTPAddressClass
-<SUBSECTION Private>
-camel_nntp_address_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-folder</FILE>
-<TITLE>CamelImapFolder</TITLE>
-CamelImapFolder
-camel_imap_folder_new
-camel_imap_folder_selected
-camel_imap_folder_changed
-camel_imap_folder_fetch_data
-imap_append_resyncing
-imap_transfer_resyncing
-imap_expunge_uids_resyncing
-<SUBSECTION Standard>
-CAMEL_IMAP_FOLDER
-CAMEL_IS_IMAP_FOLDER
-CAMEL_IMAP_FOLDER_TYPE
-CAMEL_IMAP_FOLDER_CLASS
-CamelImapFolderClass
-<SUBSECTION Private>
-CamelImapFolderPrivate
-camel_imap_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-journal</FILE>
-<TITLE>CamelImapJournal</TITLE>
-CamelOfflineAction
-CamelIMAPJournalEntry
-CamelIMAPJournal
-camel_imap_journal_new
-camel_imap_journal_log
-camel_imap_journal_uidmap_add
-camel_imap_journal_uidmap_lookup
-camel_imap_journal_close_folders
-<SUBSECTION Standard>
-CAMEL_TYPE_IMAP_JOURNAL
-CAMEL_IMAP_JOURNAL
-CAMEL_IMAP_JOURNAL_CLASS
-CAMEL_IS_IMAP_JOURNAL
-CAMEL_IS_IMAP_JOURNAL_CLASS
-CAMEL_IMAP_JOURNAL_GET_CLASS
-CamelIMAPJournalClass
-<SUBSECTION Private>
-camel_imap_journal_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-message-cache</FILE>
-<TITLE>CamelImapMessageCache</TITLE>
-CamelImapMessageCache
-camel_imap_message_cache_new
-camel_imap_message_cache_set_path
-camel_imap_message_cache_max_uid
-camel_imap_message_cache_insert
-camel_imap_message_cache_insert_stream
-camel_imap_message_cache_insert_wrapper
-camel_imap_message_cache_get
-camel_imap_message_cache_get_filename
-camel_imap_message_cache_remove
-camel_imap_message_cache_clear
-camel_imap_message_cache_copy
-camel_imap_message_cache_delete
-camel_imap_message_cache_filter_cached
-<SUBSECTION Standard>
-CAMEL_IMAP_MESSAGE_CACHE
-CAMEL_IS_IMAP_MESSAGE_CACHE
-CAMEL_IMAP_MESSAGE_CACHE_TYPE
-CAMEL_IMAP_MESSAGE_CACHE_CLASS
-CamelImapMessageCacheClass
-<SUBSECTION Private>
-camel_imap_message_cache_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-search</FILE>
-<TITLE>CamelImapSearch</TITLE>
-CamelImapSearch
-camel_imap_search_new
-<SUBSECTION Standard>
-CAMEL_IMAP_SEARCH
-CAMEL_IS_IMAP_SEARCH
-CAMEL_IMAP_SEARCH_TYPE
-CAMEL_IMAP_SEARCH_CLASS
-CamelImapSearchClass
-<SUBSECTION Private>
-camel_imap_search_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-store-summary</FILE>
-<TITLE>CamelImapStoreSummary</TITLE>
-CamelImapStoreInfo
-CamelImapStoreNamespace
-CamelImapStoreSummary
-camel_imap_store_summary_new
-camel_imap_store_summary_namespace_set_main
-camel_imap_store_summary_namespace_add_secondary
-camel_imap_store_summary_get_main_namespace
-camel_imap_store_summary_namespace_find_path
-camel_imap_store_summary_namespace_find_full
-camel_imap_store_summary_full_to_path
-camel_imap_store_summary_path_to_full
-camel_imap_store_summary_full_name
-camel_imap_store_summary_add_from_full
-camel_imap_store_summary_full_from_path
-camel_imap_store_info_full_name
-<SUBSECTION Standard>
-CAMEL_IMAP_STORE_SUMMARY
-CAMEL_IS_IMAP_STORE_SUMMARY
-CAMEL_IMAP_STORE_SUMMARY_CLASS
-CamelImapStoreSummaryClass
-<SUBSECTION Private>
-camel_imap_store_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-store</FILE>
-<TITLE>CamelImapStore</TITLE>
-CamelImapMsg
-CamelImapStore
-camel_imap_msg_new
-camel_imap_msg_queue
-CAMEL_IMAP_STORE_NAMESPACE
-CAMEL_IMAP_STORE_OVERRIDE_NAMESPACE
-CAMEL_IMAP_STORE_CHECK_ALL
-CAMEL_IMAP_STORE_FILTER_INBOX
-CAMEL_IMAP_STORE_FILTER_JUNK
-CAMEL_IMAP_STORE_FILTER_JUNK_INBOX
-CAMEL_IMAP_STORE_CHECK_LSUB
-CAMEL_IMAP_FOLDER_MARKED
-CAMEL_IMAP_FOLDER_UNMARKED
-CamelImapServerLevel
-IMAP_CAPABILITY_IMAP4
-IMAP_CAPABILITY_IMAP4REV1
-IMAP_CAPABILITY_STATUS
-IMAP_CAPABILITY_NAMESPACE
-IMAP_CAPABILITY_UIDPLUS
-IMAP_CAPABILITY_LITERALPLUS
-IMAP_CAPABILITY_STARTTLS
-IMAP_CAPABILITY_useful_lsub
-IMAP_CAPABILITY_utf8_search
-IMAP_CAPABILITY_XGWEXTENSIONS
-IMAP_CAPABILITY_XGWMOVE
-IMAP_CAPABILITY_LOGINDISABLED
-IMAP_CAPABILITY_QUOTA
-IMAP_PARAM_OVERRIDE_NAMESPACE
-IMAP_PARAM_CHECK_ALL
-IMAP_PARAM_FILTER_INBOX
-IMAP_PARAM_FILTER_JUNK
-IMAP_PARAM_FILTER_JUNK_INBOX
-IMAP_PARAM_SUBSCRIPTIONS
-IMAP_PARAM_CHECK_LSUB
-IMAP_FETCH_ALL_HEADERS
-IMAP_FETCH_MAILING_LIST_HEADERS
-IMAP_FETCH_MINIMAL_HEADERS
-camel_imap_store_connected
-camel_imap_store_readline
-<SUBSECTION Standard>
-CAMEL_IMAP_STORE
-CAMEL_IS_IMAP_STORE
-CAMEL_IMAP_STORE_TYPE
-CAMEL_IMAP_STORE_CLASS
-CamelImapStoreClass
-<SUBSECTION Private>
-camel_imap_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-summary</FILE>
-<TITLE>CamelImapSummary</TITLE>
-CAMEL_IMAP_SERVER_FLAGS
-CamelImapMessageContentInfo
-CamelImapMessageInfo
-CamelImapSummary
-camel_imap_summary_new
-camel_imap_summary_add_offline
-camel_imap_summary_add_offline_uncached
-<SUBSECTION Standard>
-CAMEL_IMAP_SUMMARY
-CAMEL_IS_IMAP_SUMMARY
-CAMEL_IMAP_SUMMARY_CLASS
-CamelImapSummaryClass
-<SUBSECTION Private>
-camel_imap_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-wrapper</FILE>
-<TITLE>CamelImapWrapper</TITLE>
-CamelImapWrapper
-camel_imap_wrapper_new
-<SUBSECTION Standard>
-CAMEL_IMAP_WRAPPER
-CAMEL_IS_IMAP_WRAPPER
-CAMEL_IMAP_WRAPPER_TYPE
-CAMEL_IMAP_WRAPPER_CLASS
-CamelImapWrapperClass
-<SUBSECTION Private>
-camel_imap_wrapper_get_type
-CamelImapWrapperPrivate
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-folder</FILE>
-<TITLE>CamelGroupwiseFolder</TITLE>
-CamelGroupwiseFolder
-camel_gw_folder_new
-gw_update_summary
-<SUBSECTION Standard>
-CAMEL_GROUPWISE_FOLDER
-CAMEL_IS_GROUPWISE_FOLDER
-CAMEL_GROUPWISE_FOLDER_TYPE
-CAMEL_GROUPWISE_FOLDER_CLASS
-CamelGroupwiseFolderClass
-<SUBSECTION Private>
-camel_groupwise_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-store-summary</FILE>
-<TITLE>CamelGroupwiseStoreSummary</TITLE>
-CamelGroupwiseStoreInfo
-CamelGroupwiseStoreNamespace
-CamelGroupwiseStoreSummary
-camel_groupwise_store_summary_new
-camel_groupwise_store_summary_full_name
-camel_groupwise_store_summary_add_from_full
-camel_groupwise_store_summary_full_to_path
-camel_groupwise_store_summary_path_to_full
-camel_groupwise_store_summary_full_from_path
-camel_groupwise_store_summary_namespace_new
-camel_groupwise_store_summary_namespace_find_path
-camel_groupwise_store_summary_namespace_set
-camel_groupwise_store_info_full_name
-<SUBSECTION Standard>
-CAMEL_GW_STORE_SUMMARY
-CAMEL_IS_GW_STORE_SUMMARY
-CAMEL_GW_STORE_SUMMARY_CLASS
-CamelGroupwiseStoreSummaryClass
-<SUBSECTION Private>
-camel_groupwise_store_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-store</FILE>
-<TITLE>CamelGroupwiseStore</TITLE>
-GW_PARAM_FILTER_INBOX
-CamelGroupwiseStore
-CamelGroupwiseStorePrivate
-groupwise_get_name
-camel_groupwise_store_container_id_lookup
-camel_groupwise_store_folder_lookup
-cnc_lookup
-storage_path_lookup
-groupwise_base_url_lookup
-create_junk_folder
-camel_groupwise_store_connected
-gw_store_reload_folder
-groupwise_store_set_current_folder
-<SUBSECTION Standard>
-CAMEL_GROUPWISE_STORE
-CAMEL_IS_GROUPWISE_STORE
-CAMEL_GROUPWISE_STORE_TYPE
-CAMEL_GROUPWISE_STORE_CLASS
-CamelGroupwiseStoreClass
-<SUBSECTION Private>
-camel_groupwise_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-summary</FILE>
-<TITLE>CamelGroupwiseSummary</TITLE>
-CamelGroupwiseSummary
-CamelGroupwiseMessageInfo
-CamelGroupwiseMessageContentInfo
-camel_groupwise_summary_new
-camel_gw_summary_add_offline
-camel_gw_summary_add_offline_uncached
-groupwise_summary_clear
-<SUBSECTION Standard>
-CAMEL_GROUPWISE_SUMMARY
-CAMEL_IS_GROUPWISE_SUMMARY
-CAMEL_GROUPWISE_SUMMARY_CLASS
-CamelGroupwiseSummaryClass
-<SUBSECTION Private>
-camel_groupwise_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-transport</FILE>
-<TITLE>CamelGroupwiseTransport</TITLE>
-CamelGroupwiseTransport
-<SUBSECTION Standard>
-CAMEL_GROUPWISE_TRANSPORT
-CAMEL_IS_GROUPWISE_TRANSPORT
-CAMEL_GROUPWISE_TRANSPORT_TYPE
-CAMEL_GROUPWISE_TRANSPORT_CLASS
-CamelGroupwiseTransportClass
-<SUBSECTION Private>
-camel_groupwise_transport_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-journal</FILE>
-<TITLE>CamelGroupwiseJournal</TITLE>
-CamelGroupwiseJournal
-CamelGroupwiseJournalEntry
-camel_groupwise_journal_new
-camel_groupwise_journal_append
-camel_groupwise_journal_transfer
-<SUBSECTION Standard>
-CAMEL_GROUPWISE_JOURNAL
-CAMEL_IS_GROUPWISE_JOURNAL
-CAMEL_TYPE_GROUPWISE_JOURNAL
-CAMEL_GROUPWISE_JOURNAL_CLASS
-CAMEL_IS_GROUPWISE_JOURNAL_CLASS
-CAMEL_GROUPWISE_JOURNAL_GET_CLASS
-CamelGroupwiseJournalClass
-<SUBSECTION Private>
-camel_groupwise_journal_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-engine</FILE>
-<TITLE>CamelIMAP4Engine</TITLE>
-CamelIMAP4Engine
-camel_imap4_engine_t
-camel_imap4_level_t
-camel_imap4_resp_code_t
-CamelIMAP4RespCode
-CamelIMAP4Namespace
-CamelIMAP4NamespaceList
-CamelIMAP4ReconnectFunc
-camel_imap4_engine_new
-camel_imap4_engine_take_stream
-camel_imap4_engine_disconnect
-camel_imap4_engine_capability
-camel_imap4_engine_namespace
-camel_imap4_engine_select_folder
-camel_imap4_engine_queue
-camel_imap4_engine_prequeue
-camel_imap4_engine_dequeue
-camel_imap4_engine_iterate
-camel_imap4_engine_handle_untagged_1
-camel_imap4_engine_handle_untagged
-camel_imap4_engine_next_token
-camel_imap4_engine_line
-camel_imap4_engine_literal
-camel_imap4_engine_nstring
-camel_imap4_engine_eat_line
-camel_imap4_engine_parse_resp_code
-camel_imap4_resp_code_free
-<SUBSECTION Standard>
-CAMEL_IMAP4_ENGINE
-CAMEL_IS_IMAP4_ENGINE
-CAMEL_TYPE_IMAP4_ENGINE
-CAMEL_IMAP4_ENGINE_CLASS
-CAMEL_IS_IMAP4_ENGINE_CLASS
-CAMEL_IMAP4_ENGINE_GET_CLASS
-CamelIMAP4EngineClass
-<SUBSECTION Private>
-camel_imap4_engine_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-folder</FILE>
-<TITLE>CamelIMAP4Folder</TITLE>
-CamelIMAP4Folder
-camel_imap4_folder_new
-camel_imap4_folder_utf7_name
-<SUBSECTION Standard>
-CAMEL_IMAP4_FOLDER
-CAMEL_IS_IMAP4_FOLDER
-CAMEL_TYPE_IMAP4_FOLDER
-CAMEL_IMAP4_FOLDER_CLASS
-CAMEL_IS_IMAP4_FOLDER_CLASS
-CAMEL_IMAP4_FOLDER_GET_CLASS
-CamelIMAP4FolderClass
-<SUBSECTION Private>
-camel_imap4_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-search</FILE>
-<TITLE>CamelIMAP4Search</TITLE>
-CamelIMAP4Search
-camel_imap4_search_new
-<SUBSECTION Standard>
-CAMEL_IMAP4_SEARCH
-CAMEL_IS_IMAP4_SEARCH
-CAMEL_IMAP4_SEARCH_TYPE
-CAMEL_IMAP4_SEARCH_CLASS
-CamelIMAP4SearchClass
-<SUBSECTION Private>
-camel_imap4_search_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-store-summary</FILE>
-<TITLE>CamelIMAP4StoreSummary</TITLE>
-CamelIMAP4StoreInfo
-CamelIMAP4StoreSummary
-camel_imap4_store_summary_new
-camel_imap4_store_summary_set_capabilities
-camel_imap4_store_summary_set_namespaces
-camel_imap4_store_summary_note_info
-camel_imap4_store_summary_unnote_info
-camel_imap4_store_summary_get_folder_info
-<SUBSECTION Standard>
-CAMEL_IMAP4_STORE_SUMMARY
-CAMEL_IS_IMAP4_STORE_SUMMARY
-CAMEL_IMAP4_STORE_SUMMARY_CLASS
-CamelIMAP4StoreSummaryClass
-<SUBSECTION Private>
-camel_imap4_store_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-store</FILE>
-<TITLE>CamelIMAP4Store</TITLE>
-CamelIMAP4Store
-<SUBSECTION Standard>
-CAMEL_IMAP4_STORE
-CAMEL_IS_IMAP4_STORE
-CAMEL_TYPE_IMAP4_STORE
-CAMEL_IMAP4_STORE_CLASS
-CAMEL_IS_IMAP4_STORE_CLASS
-CAMEL_IMAP4_STORE_GET_CLASS
-CamelIMAP4StoreClass
-<SUBSECTION Private>
-camel_imap4_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-stream</FILE>
-<TITLE>CamelIMAP4Stream</TITLE>
-IMAP4_READ_PRELEN
-IMAP4_READ_BUFLEN
-camel_imap4_token_t
-CamelIMAP4Stream
-camel_imap4_stream_new
-camel_imap4_stream_next_token
-camel_imap4_stream_unget_token
-camel_imap4_stream_line
-camel_imap4_stream_literal
-<SUBSECTION Standard>
-CAMEL_IMAP4_STREAM
-CAMEL_IS_IMAP4_STREAM
-CAMEL_TYPE_IMAP4_STREAM
-CAMEL_IMAP4_STREAM_CLASS
-CamelIMAP4StreamClass
-<SUBSECTION Private>
-camel_imap4_stream_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-summary</FILE>
-<TITLE>CamelIMAP4Summary</TITLE>
-CamelIMAP4Summary
-CamelIMAP4MessageInfo
-CamelIMAP4MessageContentInfo
-CAMEL_IMAP4_MESSAGE_RECENT
-camel_imap4_summary_new
-camel_imap4_summary_set_exists
-camel_imap4_summary_set_recent
-camel_imap4_summary_set_unseen
-camel_imap4_summary_set_uidnext
-camel_imap4_summary_set_uidvalidity
-camel_imap4_summary_expunge
-camel_imap4_summary_flush_updates
-<SUBSECTION Standard>
-CAMEL_IMAP4_SUMMARY
-CAMEL_IS_IMAP4_SUMMARY
-CAMEL_TYPE_IMAP4_SUMMARY
-CAMEL_IMAP4_SUMMARY_CLASS
-CAMEL_IS_IMAP4_SUMMARY_CLASS
-CAMEL_IMAP4_SUMMARY_GET_CLASS
-CamelIMAP4SummaryClass
-<SUBSECTION Private>
-camel_imap4_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-journal</FILE>
-<TITLE>CamelIMAP4Journal</TITLE>
-CamelIMAP4Journal
-CamelIMAP4JournalEntry
-camel_imap4_journal_new
-camel_imap4_journal_readd_failed
-camel_imap4_journal_append
-<SUBSECTION Standard>
-CAMEL_IMAP4_JOURNAL
-CAMEL_IS_IMAP4_JOURNAL
-CAMEL_TYPE_IMAP4_JOURNAL
-CAMEL_IMAP4_JOURNAL_CLASS
-CAMEL_IS_IMAP4_JOURNAL_CLASS
-CAMEL_IMAP4_JOURNAL_GET_CLASS
-CamelIMAP4JournalClass
-<SUBSECTION Private>
-camel_imap4_journal_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-local-folder</FILE>
-<TITLE>CamelLocalFolder</TITLE>
-CamelLocalFolder
-camel_local_folder_construct
-camel_local_folder_lock
-camel_local_folder_unlock
-<SUBSECTION Standard>
-CAMEL_LOCAL_FOLDER
-CAMEL_IS_LOCAL_FOLDER
-CAMEL_LOCAL_FOLDER_TYPE
-CAMEL_LOCAL_FOLDER_CLASS
-CamelLocalFolderClass
-<SUBSECTION Private>
-CamelLocalFolderPrivate
-camel_local_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-local-store</FILE>
-<TITLE>CamelLocalStore</TITLE>
-CamelLocalStore
-camel_local_store_get_toplevel_dir
-camel_local_store_get_full_path
-camel_local_store_get_meta_path
-<SUBSECTION Standard>
-CAMEL_LOCAL_STORE
-CAMEL_IS_LOCAL_STORE
-CAMEL_LOCAL_STORE_TYPE
-CAMEL_LOCAL_STORE_CLASS
-CamelLocalStoreClass
-<SUBSECTION Private>
-camel_local_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-local-summary</FILE>
-<TITLE>CamelLocalSummary</TITLE>
-CamelLocalSummary
-CamelLocalMessageInfo
-camel_local_summary_construct
-camel_local_summary_load
-camel_local_summary_check
-camel_local_summary_sync
-camel_local_summary_add
-camel_local_summary_check_force
-camel_local_summary_encode_x_evolution
-camel_local_summary_decode_x_evolution
-camel_local_summary_write_headers
-<SUBSECTION Standard>
-CAMEL_LOCAL_SUMMARY
-CAMEL_IS_LOCAL_SUMMARY
-CAMEL_LOCAL_SUMMARY_CLASS
-CamelLocalSummaryClass
-<SUBSECTION Private>
-camel_local_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-maildir-folder</FILE>
-<TITLE>CamelMaildirFolder</TITLE>
-CamelMaildirFolder
-camel_maildir_folder_new
-<SUBSECTION Standard>
-CAMEL_MAILDIR_FOLDER
-CAMEL_IS_MAILDIR_FOLDER
-CAMEL_MAILDIR_FOLDER_TYPE
-CAMEL_MAILDIR_FOLDER_CLASS
-CamelMaildirFolderClass
-<SUBSECTION Private>
-camel_maildir_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-maildir-store</FILE>
-<TITLE>CamelMaildirStore</TITLE>
-CamelMaildirStore
-<SUBSECTION Standard>
-CAMEL_MAILDIR_STORE
-CAMEL_IS_MAILDIR_STORE
-CAMEL_MAILDIR_STORE_TYPE
-CAMEL_MAILDIR_STORE_CLASS
-CamelMaildirStoreClass
-<SUBSECTION Private>
-camel_maildir_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-maildir-summary</FILE>
-<TITLE>CamelMaildirSummary</TITLE>
-CamelMaildirSummary
-CamelMaildirMessageContentInfo
-CamelMaildirMessageInfo
-camel_maildir_summary_new
-camel_maildir_summary_info_to_name
-camel_maildir_summary_name_to_info
-camel_maildir_info_filename
-camel_maildir_info_set_filename
-<SUBSECTION Standard>
-CAMEL_MAILDIR_SUMMARY
-CAMEL_IS_MAILDIR_SUMMARY
-CAMEL_MAILDIR_SUMMARY_CLASS
-CamelMaildirSummaryClass
-<SUBSECTION Private>
-camel_maildir_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-mbox-folder</FILE>
-<TITLE>CamelMboxFolder</TITLE>
-CamelMboxFolder
-camel_mbox_folder_new
-<SUBSECTION Standard>
-CAMEL_MBOX_FOLDER
-CAMEL_IS_MBOX_FOLDER
-CAMEL_MBOX_FOLDER_TYPE
-CAMEL_MBOX_FOLDER_CLASS
-CamelMboxFolderClass
-<SUBSECTION Private>
-camel_mbox_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-mbox-store</FILE>
-<TITLE>CamelMboxStore</TITLE>
-CamelMboxStore
-<SUBSECTION Standard>
-CAMEL_MBOX_STORE
-CAMEL_IS_MBOX_STORE
-CAMEL_MBOX_STORE_TYPE
-CAMEL_MBOX_STORE_CLASS
-CamelMboxStoreClass
-<SUBSECTION Private>
-camel_mbox_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-mbox-summary</FILE>
-<TITLE>CamelMboxSummary</TITLE>
-STATUS_PINE
-CamelMboxSummary
-CamelMboxMessageContentInfo
-CamelMboxMessageInfo
-camel_mbox_summary_new
-camel_mbox_summary_xstatus
-camel_mbox_summary_sync_mbox
-<SUBSECTION Standard>
-CAMEL_MBOX_SUMMARY
-CAMEL_IS_MBOX_SUMMARY
-CAMEL_MBOX_SUMMARY_CLASS
-CamelMboxSummaryClass
-<SUBSECTION Private>
-camel_mbox_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-mh-folder</FILE>
-<TITLE>CamelMhFolder</TITLE>
-CamelMhFolder
-camel_mh_folder_new
-<SUBSECTION Standard>
-CAMEL_MH_FOLDER
-CAMEL_IS_MH_FOLDER
-CAMEL_MH_FOLDER_TYPE
-CAMEL_MH_FOLDER_CLASS
-CamelMhFolderClass
-<SUBSECTION Private>
-camel_mh_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-mh-store</FILE>
-<TITLE>CamelMhStore</TITLE>
-CamelMhStore
-<SUBSECTION Standard>
-CAMEL_MH_STORE
-CAMEL_IS_MH_STORE
-CAMEL_MH_STORE_TYPE
-CAMEL_MH_STORE_CLASS
-CamelMhStoreClass
-<SUBSECTION Private>
-camel_mh_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-mh-summary</FILE>
-<TITLE>CamelMhSummary</TITLE>
-CamelMhSummary
-camel_mh_summary_new
-<SUBSECTION Standard>
-CAMEL_MH_SUMMARY
-CAMEL_IS_MH_SUMMARY
-CAMEL_MH_SUMMARY_CLASS
-CamelMhSummaryClass
-<SUBSECTION Private>
-camel_mh_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-spool-folder</FILE>
-<TITLE>CamelSpoolFolder</TITLE>
-CamelSpoolFolder
-camel_spool_folder_new
-<SUBSECTION Standard>
-CAMEL_SPOOL_FOLDER
-CAMEL_IS_SPOOL_FOLDER
-CAMEL_SPOOL_FOLDER_TYPE
-CAMEL_SPOOL_FOLDER_CLASS
-CamelSpoolFolderClass
-<SUBSECTION Private>
-camel_spool_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-spool-store</FILE>
-<TITLE>CamelSpoolStore</TITLE>
-CamelSpoolStore
-camel_spool_store_t
-<SUBSECTION Standard>
-CAMEL_SPOOL_STORE
-CAMEL_IS_SPOOL_STORE
-CAMEL_SPOOL_STORE_TYPE
-CAMEL_SPOOL_STORE_CLASS
-CamelSpoolStoreClass
-<SUBSECTION Private>
-camel_spool_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-spool-summary</FILE>
-<TITLE>CamelSpoolSummary</TITLE>
-CamelSpoolSummary
-camel_spool_summary_construct
-camel_spool_summary_new
-camel_spool_summary_load
-camel_spool_summary_check
-camel_spool_summary_sync
-camel_spool_summary_add
-camel_spool_summary_encode_x_evolution
-camel_spool_summary_decode_x_evolution
-camel_spool_summary_write_headers
-<SUBSECTION Standard>
-CAMEL_SPOOL_SUMMARY
-CAMEL_IS_SPOOL_SUMMARY
-CAMEL_SPOOL_SUMMARY_CLASS
-CamelSpoolSummaryClass
-<SUBSECTION Private>
-camel_spool_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-folder</FILE>
-<TITLE>CamelNNTPFolder</TITLE>
-CamelNNTPFolder
-camel_nntp_folder_new
-camel_nntp_folder_selected
-<SUBSECTION Standard>
-CAMEL_NNTP_FOLDER
-CAMEL_IS_NNTP_FOLDER
-CAMEL_NNTP_FOLDER_TYPE
-CAMEL_NNTP_FOLDER_CLASS
-CamelNNTPFolderClass
-<SUBSECTION Private>
-CamelNNTPFolderPrivate
-camel_nntp_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-store-summary</FILE>
-<TITLE>CamelNNTPStoreSummary</TITLE>
-CamelNNTPStoreInfo
-CamelNNTPStoreSummary
-NNTP_DATE_SIZE
-camel_nntp_store_summary_new
-camel_nntp_store_info_full_name
-camel_nntp_store_summary_full_to_path
-camel_nntp_store_summary_path_to_full
-camel_nntp_store_summary_dotted_to_full
-camel_nntp_store_summary_full_name
-camel_nntp_store_summary_add_from_full
-camel_nntp_store_summary_full_from_path
-<SUBSECTION Standard>
-CAMEL_NNTP_STORE_SUMMARY
-CAMEL_IS_NNTP_STORE_SUMMARY
-CAMEL_NNTP_STORE_SUMMARY_CLASS
-CamelNNTPStoreSummaryClass
-<SUBSECTION Private>
-camel_nntp_store_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-store</FILE>
-<TITLE>CamelNNTPStore</TITLE>
-CamelNNTPStore
-CAMEL_NNTP_EXT_SEARCH
-CAMEL_NNTP_EXT_SETGET
-CAMEL_NNTP_EXT_OVER
-CAMEL_NNTP_EXT_XPATTEXT
-CAMEL_NNTP_EXT_XACTIVE
-CAMEL_NNTP_EXT_LISTMOTD
-CAMEL_NNTP_EXT_LISTSUBSCR
-CAMEL_NNTP_EXT_LISTPNAMES
-xover_t
-xover_header
-camel_nntp_raw_commandv
-camel_nntp_raw_command
-camel_nntp_raw_command_auth
-camel_nntp_command
-<SUBSECTION Standard>
-CAMEL_NNTP_STORE
-CAMEL_IS_NNTP_STORE
-CAMEL_NNTP_STORE_TYPE
-CAMEL_NNTP_STORE_CLASS
-CamelNNTPStoreClass
-<SUBSECTION Private>
-CamelNNTPStorePrivate
-camel_nntp_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-stream</FILE>
-<TITLE>CamelNNTPStream</TITLE>
-CamelNNTPStream
-camel_nntp_stream_mode_t
-camel_nntp_stream_new
-camel_nntp_stream_set_mode
-camel_nntp_stream_line
-camel_nntp_stream_gets
-camel_nntp_stream_getd
-<SUBSECTION Standard>
-CAMEL_NNTP_STREAM
-CAMEL_IS_NNTP_STREAM
-CAMEL_NNTP_STREAM_CLASS
-CamelNNTPStreamClass
-<SUBSECTION Private>
-camel_nntp_stream_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-summary</FILE>
-<TITLE>CamelNNTPSummary</TITLE>
-CamelNNTPSummary
-camel_nntp_summary_new
-camel_nntp_summary_check
-<SUBSECTION Standard>
-CAMEL_NNTP_SUMMARY
-CAMEL_IS_LOCAL_SUMMARY
-CAMEL_NNTP_SUMMARY_CLASS
-CamelNNTPSummaryClass
-<SUBSECTION Private>
-camel_nntp_summary_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-pop3-engine</FILE>
-<TITLE>CamelPOP3Engine</TITLE>
-CamelPOP3Engine
-CamelPOP3Command
-camel_pop3_engine_t
-camel_pop3_command_t
-CamelPOP3CommandFunc
-camel_pop3_engine_new
-camel_pop3_engine_reget_capabilities
-camel_pop3_engine_command_free
-camel_pop3_engine_iterate
-camel_pop3_engine_command_new
-<SUBSECTION Standard>
-CAMEL_POP3_ENGINE
-CAMEL_IS_POP3_ENGINE
-CAMEL_POP3_ENGINE_CLASS
-CamelPOP3EngineClass
-<SUBSECTION Private>
-camel_pop3_engine_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-pop3-folder</FILE>
-<TITLE>CamelPOP3Folder</TITLE>
-CamelPOP3Folder
-CamelPOP3FolderInfo
-camel_pop3_folder_new
-camel_pop3_delete_old
-<SUBSECTION Standard>
-CAMEL_POP3_FOLDER
-CAMEL_IS_POP3_FOLDER
-CAMEL_POP3_FOLDER_TYPE
-CAMEL_POP3_FOLDER_CLASS
-CamelPOP3FolderClass
-<SUBSECTION Private>
-camel_pop3_folder_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-pop3-store</FILE>
-<TITLE>CamelPOP3Store</TITLE>
-CamelPOP3Store
-camel_pop3_store_expunge
-camel_pop3_command
-camel_pop3_command_get_additional_data
-<SUBSECTION Standard>
-CAMEL_POP3_STORE
-CAMEL_IS_POP3_STORE
-CAMEL_POP3_STORE_TYPE
-CAMEL_POP3_STORE_CLASS
-CamelPOP3StoreClass
-<SUBSECTION Private>
-camel_pop3_store_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-pop3-stream</FILE>
-<TITLE>CamelPOP3Stream</TITLE>
-CamelPOP3Stream
-camel_pop3_stream_mode_t
-camel_pop3_stream_new
-camel_pop3_stream_set_mode
-camel_pop3_stream_line
-camel_pop3_stream_gets
-camel_pop3_stream_getd
-<SUBSECTION Standard>
-CAMEL_POP3_STREAM
-CAMEL_IS_POP3_STREAM
-CAMEL_POP3_STREAM_CLASS
-CamelPOP3StreamClass
-<SUBSECTION Private>
-camel_pop3_stream_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-sendmail-transport</FILE>
-<TITLE>CamelSendmailTransport</TITLE>
-CamelSendmailTransport
-<SUBSECTION Standard>
-CAMEL_SENDMAIL_TRANSPORT
-CAMEL_IS_SENDMAIL_TRANSPORT
-CAMEL_SENDMAIL_TRANSPORT_TYPE
-CAMEL_SENDMAIL_TRANSPORT_CLASS
-CamelSendmailTransportClass
-<SUBSECTION Private>
-camel_sendmail_transport_get_type
-</SECTION>
-
-<SECTION>
-<FILE>camel-smtp-transport</FILE>
-<TITLE>CamelSmtpTransport</TITLE>
-CamelSmtpTransport
-CAMEL_SMTP_TRANSPORT_IS_ESMTP
-CAMEL_SMTP_TRANSPORT_8BITMIME
-CAMEL_SMTP_TRANSPORT_ENHANCEDSTATUSCODES
-CAMEL_SMTP_TRANSPORT_STARTTLS
-CAMEL_SMTP_TRANSPORT_AUTH_EQUAL
-<SUBSECTION Standard>
-CAMEL_SMTP_TRANSPORT
-CAMEL_IS_SMTP_TRANSPORT
-CAMEL_SMTP_TRANSPORT_TYPE
-CAMEL_SMTP_TRANSPORT_CLASS
-CamelSmtpTransportClass
-<SUBSECTION Private>
-camel_smtp_transport_get_type
-</SECTION>
-
-<SECTION>
-<FILE>session</FILE>
-<TITLE>CamelTestSession</TITLE>
-CamelTestSession
-camel_test_session_new
-<SUBSECTION Standard>
-CAMEL_TEST_SESSION
-CAMEL_TEST_IS_SESSION
-CAMEL_TEST_SESSION_TYPE
-CAMEL_TEST_SESSION_CLASS
-CamelTestSessionClass
-<SUBSECTION Private>
-camel_test_session_get_type
-</SECTION>
-
-<SECTION>
<FILE>camel-arg</FILE>
CamelArg
CamelArgV
camel_operation_uncancel
camel_operation_register
camel_operation_unregister
-camel_operation_cancel_block
-camel_operation_cancel_unblock
camel_operation_cancel_check
camel_operation_cancel_fd
camel_operation_cancel_prfd
camel_operation_start
camel_operation_start_transient
camel_operation_progress
-camel_operation_progress_count
camel_operation_end
</SECTION>
<SECTION>
-<FILE>camel-partition-table</FILE>
-<TITLE>CamelPartitionTable</TITLE>
-<TITLE>CamelKeyTable</TITLE>
-camel_hash_t
-CamelPartitionKey
-CamelPartitionKeyBlock
-CamelPartitionMap
-CamelPartitionMapBlock
-CamelPartitionTable
-camel_partition_table_new
-camel_partition_table_sync
-camel_partition_table_add
-camel_partition_table_lookup
-camel_partition_table_remove
-CamelKeyBlock
-CamelKeyRootBlock
-CamelKeyKey
-CAMEL_KEY_TABLE_MAX_KEY
-CamelKeyTable
-camel_key_table_new
-camel_key_table_sync
-camel_key_table_add
-camel_key_table_set_data
-camel_key_table_set_flags
-camel_key_table_lookup
-camel_key_table_next
-<SUBSECTION Standard>
-CamelPartitionTableClass
-CamelKeyTableClass
-<SUBSECTION Private>
-camel_partition_table_get_type
-camel_key_table_get_type
-</SECTION>
-
-<SECTION>
<FILE>camel-string-utils</FILE>
camel_strcase_equal
camel_strcase_hash
WIN32_LEAN_AND_MEAN
</SECTION>
-<SECTION>
-<FILE>camel-imap-command</FILE>
-CamelImapResponseType
-CamelImapResponse
-camel_imap_command
-camel_imap_command_continuation
-camel_imap_response_free
-camel_imap_response_free_without_processing
-camel_imap_response_extract
-camel_imap_response_extract_continuation
-camel_imap_command_start
-camel_imap_command_response
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap-utils</FILE>
-imap_next_word
-namespace
-namespaces
-imap_namespaces_destroy
-imap_parse_namespace_response
-imap_parse_list_response
-imap_parse_folder_name
-imap_create_flag_list
-imap_parse_flag_list
-imap_parse_string_generic
-imap_parse_string
-imap_parse_nstring
-imap_parse_astring
-imap_parse_body
-imap_is_atom
-imap_quote_string
-imap_skip_list
-imap_uid_array_to_set
-imap_uid_set_to_array
-imap_uid_array_free
-imap_concat
-imap_namespace_concat
-imap_mailbox_encode
-imap_mailbox_decode
-IMAPPathFindFoldersCallback
-imap_path_to_physical
-imap_path_find_folders
-</SECTION>
-
-<SECTION>
-<FILE>camel-groupwise-utils</FILE>
-X_SEND_OPTIONS
-X_SEND_OPT_PRIORITY
-X_SEND_OPT_SECURITY
-X_REPLY_CONVENIENT
-X_REPLY_WITHIN
-X_EXPIRE_AFTER
-X_DELAY_UNTIL
-X_TRACK_WHEN
-X_AUTODELETE
-X_RETURN_NOTIFY_OPEN
-X_RETURN_NOTIFY_DELETE
-RECEIVED
-SENT
-DRAFT
-PERSONAL
-flags_diff_t
-EPathFindFoldersCallback
-e_path_to_physical
-e_path_find_folders
-e_path_rmdir
-camel_groupwise_util_item_from_message
-do_flags_diff
-gw_concat
-strip_lt_gt
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-command</FILE>
-CamelIMAP4Command
-CamelIMAP4Literal
-CamelIMAP4PlusCallback
-CamelIMAP4UntaggedCallback
-CamelIMAP4CommandReset
-CamelIMAP4CommandPart
-camel_imap4_command_new
-camel_imap4_command_newv
-camel_imap4_command_register_untagged
-camel_imap4_command_ref
-camel_imap4_command_unref
-camel_imap4_command_step
-camel_imap4_command_reset
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-specials</FILE>
-is_atom
-is_ctrl
-is_lwsp
-is_type
-is_qsafe
-is_wild
-camel_imap4_specials_init
-</SECTION>
-
-<SECTION>
-<FILE>camel-imap4-utils</FILE>
-flags_diff_t
-camel_imap4_flags_diff
-camel_imap4_flags_merge
-camel_imap4_merge_flags
-camel_imap4_build_folder_info_tree
-camel_imap4_namespace_clear
-camel_imap4_namespace_list_copy
-camel_imap4_namespace_list_free
-camel_imap4_get_path_delim
-camel_imap4_get_uid_set
-camel_imap4_utils_set_unexpected_token_error
-camel_imap4_parse_flags_list
-CAMEL_IMAP4_FOLDER_MARKED
-CAMEL_IMAP4_FOLDER_UNMARKED
-camel_imap4_list_t
-camel_imap4_untagged_list
-camel_imap4_status_attr_t
-camel_imap4_status_t
-camel_imap4_status_free
-camel_imap4_untagged_status
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-auth</FILE>
-camel_nntp_auth_authenticate
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-grouplist</FILE>
-_CamelNNTPGroupList
-_CamelNNTPGroupListEntry
-camel_nntp_grouplist_fetch
-camel_nntp_grouplist_update
-camel_nntp_grouplist_save
-camel_nntp_grouplist_free
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-newsrc</FILE>
-CamelNNTPNewsrc
-camel_nntp_newsrc_get_highest_article_read
-camel_nntp_newsrc_get_num_articles_read
-camel_nntp_newsrc_mark_article_read
-camel_nntp_newsrc_mark_range_read
-camel_nntp_newsrc_article_is_read
-camel_nntp_newsrc_group_is_subscribed
-camel_nntp_newsrc_subscribe_group
-camel_nntp_newsrc_unsubscribe_group
-camel_nntp_newsrc_get_subscribed_group_names
-camel_nntp_newsrc_get_all_group_names
-camel_nntp_newsrc_free_group_names
-camel_nntp_newsrc_write_to_file
-camel_nntp_newsrc_write
-camel_nntp_newsrc_read_for_server
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-resp-codes</FILE>
-CAMEL_NNTP_OK
-CAMEL_NNTP_ERR
-CAMEL_NNTP_FAIL
-NNTP_GREETING_POSTING_OK
-NNTP_GREETING_NO_POSTING
-NNTP_EXTENSIONS_SUPPORTED
-NNTP_GROUP_SELECTED
-NNTP_LIST_FOLLOWS
-NNTP_ARTICLE_FOLLOWS
-NNTP_HEAD_FOLLOWS
-NNTP_DATA_FOLLOWS
-NNTP_NEW_ARTICLE_LIST_FOLLOWS
-NNTP_NEW_GROUP_LIST_FOLLOWS
-NNTP_NO_SUCH_GROUP
-NNTP_NO_SUCH_ARTICLE
-NNTP_NO_PERMISSION
-NNTP_AUTH_ACCEPTED
-NNTP_AUTH_CONTINUE
-NNTP_AUTH_REQUIRED
-NNTP_AUTH_REJECTED
-NNTP_PROTOCOL_ERROR
-</SECTION>
-
-<SECTION>
-<FILE>camel-nntp-utils</FILE>
-camel_nntp_get_headers
-</SECTION>
-
-<SECTION>
-<FILE>address-data</FILE>
-</SECTION>
-
-<SECTION>
-<FILE>addresses</FILE>
-test_address_compare
-</SECTION>
-
-<SECTION>
-<FILE>camel-test</FILE>
-camel_test_failv
-check
-check_msg
-check_count
-check_unref
-test_free
-push
-pull
-camel_test_init
-camel_test_start
-camel_test_end
-camel_test_push
-camel_test_pull
-camel_test_fail
-camel_test_nonfatal
-camel_test_fatal
-string_equal
-</SECTION>
-
-<SECTION>
-<FILE>folders</FILE>
-test_folder_counts
-test_message_info
-test_folder_message
-test_folder_not_message
-test_folder_basic
-test_folder_message_ops
-</SECTION>
-
-<SECTION>
-<FILE>messages</FILE>
-SET_CONTENT_WAYS
-test_message_create_simple
-test_message_set_content_simple
-test_message_write_file
-test_message_read_file
-test_message_compare_content
-test_message_compare
-test_message_dump_structure
-test_message_compare_header
-test_message_compare_messages
-</SECTION>
-
-<SECTION>
-<FILE>streams</FILE>
-test_stream_seekable_writepart
-test_stream_seekable_readpart
-SEEKABLE_SUBSTREAM_WAYS
-test_seekable_substream_writepart
-test_seekable_substream_readpart
-</SECTION>
-
-<SECTION>
-<FILE>camel-test-provider</FILE>
-camel_test_provider_init
-</SECTION>
-
+#include <camel/camel.h>
+
+camel_address_get_type
+camel_block_file_get_type
+camel_key_file_get_type
+camel_certdb_get_type
+camel_cipher_context_get_type
+camel_data_cache_get_type
+camel_data_wrapper_get_type
+camel_disco_diary_get_type
+camel_disco_folder_get_type
+camel_disco_store_get_type
+camel_filter_driver_get_type
+camel_folder_get_type
+camel_folder_search_get_type
+camel_folder_summary_get_type
+camel_gpg_context_get_type
+camel_html_parser_get_type
+camel_http_stream_get_type
+camel_index_cursor_get_type
+camel_index_name_get_type
+camel_index_get_type
+camel_internet_address_get_type
+camel_medium_get_type
+camel_mime_filter_basic_get_type
+camel_mime_filter_bestenc_get_type
+camel_mime_filter_canon_get_type
+camel_mime_filter_charset_get_type
+camel_mime_filter_crlf_get_type
+camel_mime_filter_enriched_get_type
+camel_mime_filter_from_get_type
+camel_mime_filter_gzip_get_type
+camel_mime_filter_get_type
+camel_mime_filter_html_get_type
+camel_mime_filter_index_get_type
+camel_mime_filter_linewrap_get_type
+camel_mime_filter_pgp_get_type
+camel_mime_filter_progress_get_type
+camel_mime_filter_save_get_type
+camel_mime_filter_tohtml_get_type
+camel_mime_filter_windows_get_type
+camel_mime_filter_yenc_get_type
+camel_mime_message_get_type
+camel_mime_parser_get_type
+camel_mime_part_get_type
+camel_multipart_encrypted_get_type
+camel_multipart_get_type
+camel_multipart_signed_get_type
+camel_nntp_address_get_type
+camel_object_get_type
+camel_offline_folder_get_type
+camel_offline_journal_get_type
+camel_offline_store_get_type
+camel_partition_table_get_type
+camel_key_table_get_type
+camel_sasl_anonymous_get_type
+camel_sasl_cram_md5_get_type
+camel_sasl_digest_md5_get_type
+camel_sasl_gssapi_get_type
+camel_sasl_get_type
+camel_sasl_login_get_type
+camel_sasl_ntlm_get_type
+camel_sasl_plain_get_type
+camel_sasl_popb4smtp_get_type
+camel_seekable_stream_get_type
+camel_seekable_substream_get_type
+camel_service_get_type
+camel_session_get_type
+camel_smime_context_get_type
+camel_store_get_type
+camel_store_summary_get_type
+camel_stream_buffer_get_type
+camel_stream_filter_get_type
+camel_stream_fs_get_type
+camel_stream_get_type
+camel_stream_mem_get_type
+camel_stream_null_get_type
+camel_stream_process_get_type
+camel_stream_vfs_get_type
+camel_tcp_stream_get_type
+camel_tcp_stream_raw_get_type
+camel_text_index_cursor_get_type
+camel_text_index_key_cursor_get_type
+camel_text_index_name_get_type
+camel_text_index_get_type
+camel_transport_get_type
+camel_vee_folder_get_type
+camel_vee_store_get_type
+camel_vee_summary_get_type
+camel_vtrash_folder_get_type
</para>
-@parent:
-@addresses:
-@priv:
<!-- ##### FUNCTION camel_address_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@version:
-@path:
-@flags:
-@fd:
-@block_size:
-@root:
-@root_block:
-@block_cache_limit:
-@block_cache_count:
-@block_cache:
-@blocks:
<!-- ##### MACRO CAMEL_BLOCK_FILE_SYNC ##### -->
<para>
</para>
-@parent:
-@priv:
-@fp:
-@path:
-@flags:
-@last:
<!-- ##### FUNCTION camel_key_file_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@filename:
-@version:
-@saved_certs:
-@flags:
-@cert_size:
-@cert_chunks:
-@certs:
-@cert_hash:
<!-- ##### ENUM CamelCertTrust ##### -->
<para>
</para>
-@parent:
-@priv:
+
+<!-- ##### ARG CamelCipherContext:session ##### -->
+<para>
+
+</para>
<!-- ##### STRUCT CamelCipherValidity ##### -->
<para>
@Returns:
-<!-- ##### FUNCTION camel_cipher_context_construct ##### -->
+<!-- ##### FUNCTION camel_cipher_context_get_session ##### -->
<para>
</para>
@context:
-@session:
+@Returns:
<!-- ##### FUNCTION camel_cipher_id_to_hash ##### -->
@gpointer cert_data:
@gpointer cert_data:
@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
+@gpointer cert_data:
@gpointer cert_data:
</para>
-@parent:
-@priv:
+
+<!-- ##### ARG CamelDataCache:path ##### -->
+<para>
+
+</para>
<!-- ##### FUNCTION camel_data_cache_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@encoding:
-@mime_type:
-@stream:
-@offline:
<!-- ##### FUNCTION camel_data_wrapper_new ##### -->
<para>
</para>
-@parent:
-@store:
-@file:
-@folders:
-@uidmap:
<!-- ##### ENUM CamelDiscoDiaryAction ##### -->
<para>
</para>
-@parent:
-@offline_sync:
<!-- ##### FUNCTION camel_disco_folder_expunge_uids ##### -->
<para>
</para>
-@parent:
-@status:
-@diary:
<!-- ##### ENUM CamelDiscoStoreStatus ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### USER_FUNCTION CamelFilterGetFolderFunc ##### -->
<para>
</para>
-@parent:
-@priv:
-@sexp:
-@last_search:
-@folder:
-@summary:
-@summary_set:
-@current:
-@current_message:
-@body_index:
<!-- ##### FUNCTION camel_folder_search_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@version:
-@flags:
-@nextuid:
-@time:
-@saved_count:
-@unread_count:
-@deleted_count:
-@junk_count:
-@junk_not_deleted_count:
-@visible_count:
-@message_info_chunks:
-@content_info_chunks:
-@summary_path:
-@build_content:
-@uids:
-@loaded_infos:
-@folder:
-@meta_summary:
-@cache_load_time:
-@timeout_handle:
-@collate:
-@sort_by:
-@later:
<!-- ##### STRUCT CamelMessageInfo ##### -->
<para>
</para>
-@parent:
-@priv:
-@name:
-@full_name:
-@description:
-@parent_store:
-@summary:
-@folder_flags:
-@permanent_flags:
-@later:
<!-- ##### STRUCT CamelFolderChangeInfo ##### -->
<para>
</para>
-@parent:
-@priv:
+
+<!-- ##### ARG CamelGpgContext:always-trust ##### -->
+<para>
+
+</para>
<!-- ##### FUNCTION camel_gpg_context_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM camel_html_parser_t ##### -->
<para>
</para>
-@parent:
-@parser:
-@content_type:
-@headers:
-@method:
-@session:
-@url:
-@user_agent:
-@proxy:
-@authrealm:
-@authpass:
-@statuscode:
-@raw:
-@read:
<!-- ##### ENUM CamelHttpMethod ##### -->
<para>
@CamelImapStore *store, struct _CamelImapMsg *m:
@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
@CamelImapStore *store, struct _CamelImapMsg *m:
@size:
@Returns:
</para>
-@parent:
-@priv:
-@path:
-@version:
-@flags:
-@state:
-@normalize:
-@normalize_data:
<!-- ##### USER_FUNCTION CamelIndexNorm ##### -->
<para>
</para>
-@parent:
-@priv:
-@index:
<!-- ##### FUNCTION camel_index_cursor_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@index:
-@name:
-@buffer:
-@words:
<!-- ##### FUNCTION camel_index_name_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_internet_address_new ##### -->
<para>
</para>
-@parent:
-@content:
+
+<!-- ##### ARG CamelMedium:content ##### -->
+<para>
+
+</para>
<!-- ##### STRUCT CamelMediumHeader ##### -->
<para>
@headers:
+<!-- ##### FUNCTION camel_medium_get_content ##### -->
+<para>
+
+</para>
+
+@medium:
+@Returns:
+
+
+<!-- ##### FUNCTION camel_medium_set_content ##### -->
+<para>
+
+</para>
+
+@medium:
+@content:
+
+
</para>
-@parent:
-@priv:
<!-- ##### ENUM CamelMimeFilterBasicType ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_bestenc_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_canon_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_charset_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM CamelMimeFilterCRLFDirection ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### MACRO CAMEL_MIME_FILTER_ENRICHED_IS_RICHTEXT ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_from_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM CamelMimeFilterGZipMode ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_html_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_index_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_linewrap_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_pgp_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_progress_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_save_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### MACRO CAMEL_MIME_FILTER_TOHTML_PRE ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_mime_filter_windows_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM CamelMimeFilterYencDirection ##### -->
<para>
</para>
-@parent:
-@priv:
-@outreal:
-@outbuf:
-@outptr:
-@outsize:
-@outpre:
-@backbuf:
-@backsize:
-@backlen:
<!-- ##### FUNCTION camel_mime_filter_new ##### -->
<para>
</para>
-@parent:
-@date:
-@date_offset:
-@date_received:
-@date_received_offset:
-@subject:
-@message_id:
-@reply_to:
-@from:
-@recipients:
<!-- ##### MACRO CAMEL_RECIPIENT_TYPE_TO ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM camel_mime_parser_state_t ##### -->
<para>
</para>
-@parent:
-@priv:
-@headers:
+
+<!-- ##### ARG CamelMimePart:content-id ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG CamelMimePart:content-md5 ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG CamelMimePart:description ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG CamelMimePart:disposition ##### -->
+<para>
+
+</para>
<!-- ##### FUNCTION camel_mime_part_new ##### -->
<para>
@Returns:
+<!-- ##### FUNCTION camel_mime_part_set_content_md5 ##### -->
+<para>
+
+</para>
+
+@mime_part:
+@md5sum:
+
+
+<!-- ##### FUNCTION camel_mime_part_get_content_md5 ##### -->
+<para>
+
+</para>
+
+@mime_part:
+@Returns:
+
+
<!-- ##### FUNCTION camel_mime_part_set_content_location ##### -->
<para>
</para>
-@parent:
-@version:
-@content:
-@decrypted:
-@protocol:
<!-- ##### FUNCTION camel_multipart_encrypted_new ##### -->
<para>
</para>
-@parent:
-@content:
-@signature:
-@contentraw:
-@protocol:
-@micalg:
-@start1:
-@end1:
-@start2:
-@end2:
<!-- ##### FUNCTION camel_multipart_signed_new ##### -->
<para>
</para>
-@parent:
-@parts:
-@preface:
-@postface:
<!-- ##### FUNCTION camel_multipart_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_nntp_address_new ##### -->
<para>
<!-- ##### SECTION Image ##### -->
-<!-- ##### MACRO CAMEL_OBJECT_TRACK_INSTANCES ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF CamelType ##### -->
-<para>
-
-</para>
-
-
<!-- ##### STRUCT CamelObject ##### -->
<para>
</para>
-@klass:
-@magic:
-@hooks:
-@ref_count:
-@flags:
-@next:
-@prev:
-
-<!-- ##### MACRO CAMEL_CHECK_CAST ##### -->
-<para>
-
-</para>
-
-@obj:
-@ctype:
-@ptype:
-
-
-<!-- ##### MACRO CAMEL_CHECK_CLASS_CAST ##### -->
-<para>
-
-</para>
-
-@klass:
-@ctype:
-@ptype:
-
-
-<!-- ##### MACRO CAMEL_CHECK_TYPE ##### -->
-<para>
-
-</para>
-
-@obj:
-@ctype:
-
-
-<!-- ##### MACRO CAMEL_CHECK_CLASS_TYPE ##### -->
-<para>
-
-</para>
-
-@klass:
-@ctype:
-
-
-<!-- ##### VARIABLE camel_object_type ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO CAMEL_OBJECT_GET_TYPE ##### -->
-<para>
-
-</para>
-
-@o:
-
<!-- ##### TYPEDEF CamelObjectHookID ##### -->
<para>
</para>
-<!-- ##### USER_FUNCTION CamelObjectClassInitFunc ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-
-<!-- ##### USER_FUNCTION CamelObjectClassFinalizeFunc ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-
-<!-- ##### USER_FUNCTION CamelObjectInitFunc ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-
-
-<!-- ##### USER_FUNCTION CamelObjectFinalizeFunc ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-
<!-- ##### USER_FUNCTION CamelObjectEventPrepFunc ##### -->
<para>
@Param3:
-<!-- ##### MACRO CAMEL_INVALID_TYPE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### ENUM CamelObjectFlags ##### -->
-<para>
-
-</para>
-
-@CAMEL_OBJECT_DESTROY:
-
-<!-- ##### FUNCTION camel_type_init ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION camel_type_register ##### -->
-<para>
-
-</para>
-
-@parent:
-@name:
-@instance_size:
-@classfuncs_size:
-@class_init:
-@class_finalize:
-@instance_init:
-@instance_finalize:
-@Returns:
-
-
-<!-- ##### MACRO camel_type_get_global_classfuncs ##### -->
-<para>
-
-</para>
-
-@x:
-
-
-<!-- ##### FUNCTION camel_type_to_name ##### -->
-<para>
-
-</para>
-
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_name_to_type ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-
<!-- ##### FUNCTION camel_object_class_add_event ##### -->
<para>
@prep:
-<!-- ##### FUNCTION camel_object_class_dump_tree ##### -->
-<para>
-
-</para>
-
-@root:
-
-
-<!-- ##### FUNCTION camel_object_cast ##### -->
-<para>
-
-</para>
-
-@obj:
-@ctype:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_object_is ##### -->
-<para>
-
-</para>
-
-@obj:
-@ctype:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_object_class_cast ##### -->
-<para>
-
-</para>
-
-@klass:
-@ctype:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_object_class_is ##### -->
-<para>
-
-</para>
-
-@klass:
-@ctype:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_object_new ##### -->
-<para>
-
-</para>
-
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_object_ref ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_object_unref ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-
<!-- ##### FUNCTION camel_object_hook_event ##### -->
<para>
</para>
-@vo:
+@object:
@Returns:
</para>
-@hash:
-@equal:
-@keycopy:
-@keyfree:
+@key_hash_func:
+@key_equal_func:
+@key_copy_func:
+@key_free_func:
@Returns:
@bag:
@key:
-@vo:
+@object:
<!-- ##### FUNCTION camel_object_bag_abort ##### -->
</para>
@bag:
-@o:
-@newkey:
+@object:
+@new_key:
<!-- ##### FUNCTION camel_object_bag_list ##### -->
</para>
@bag:
-@o:
+@object:
<!-- ##### FUNCTION camel_object_bag_destroy ##### -->
</para>
-@parent:
-@sync_offline:
<!-- ##### FUNCTION camel_offline_folder_downsync ##### -->
<para>
</para>
-@parent:
-@folder:
-@filename:
-@queue:
<!-- ##### STRUCT CamelOfflineJournalEntry ##### -->
<para>
</para>
-@parent:
-@state:
<!-- ##### FUNCTION camel_offline_store_set_network_state ##### -->
<para>
</para>
-@parent:
-@priv:
-@blocks:
-@rootid:
-@is_key:
-@is_key_data:
-@partition:
<!-- ##### FUNCTION camel_partition_table_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@blocks:
-@rootid:
-@root:
-@root_block:
<!-- ##### FUNCTION camel_key_table_new ##### -->
<para>
</para>
-@parent:
-@trace_info:
-@type:
<!-- ##### ENUM CamelSaslAnonTraceType ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_cram_md5_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_digest_md5_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_gssapi_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_login_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_ntlm_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_plain_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### VARIABLE camel_sasl_popb4smtp_authtype ##### -->
<para>
</para>
-@parent:
-@priv:
+
+<!-- ##### ARG CamelSasl:authenticated ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG CamelSasl:mechanism ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG CamelSasl:service ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG CamelSasl:service-name ##### -->
+<para>
+
+</para>
<!-- ##### FUNCTION camel_sasl_challenge ##### -->
<para>
</para>
-@parent:
-@position:
-@bound_start:
-@bound_end:
<!-- ##### ENUM CamelStreamSeekPolicy ##### -->
<para>
</para>
-@parent:
-@parent_stream:
<!-- ##### FUNCTION camel_seekable_substream_new ##### -->
<para>
</para>
-@parent:
-@priv:
-@session:
-@provider:
-@status:
-@connect_op:
-@url:
<!-- ##### MACRO CAMEL_SERVICE_USERNAME ##### -->
<para>
</para>
-@parent:
-@priv:
-@storage_path:
-@junk_plugin:
-@online:
-@check_junk:
-@network_state:
<!-- ##### USER_FUNCTION CamelTimeoutCallback ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM camel_smime_sign_t ##### -->
<para>
</para>
-@parent:
-@priv:
-@version:
-@flags:
-@count:
-@time:
-@uri_base:
-@store_info_size:
-@store_info_chunks:
-@summary_path:
-@folders:
-@folders_path:
<!-- ##### MACRO CAMEL_STORE_INFO_FOLDER_UNKNOWN ##### -->
<para>
</para>
-@parent:
-@priv:
-@folders:
-@cdb_r:
-@cdb_w:
-@flags:
-@mode:
-@later:
<!-- ##### STRUCT CamelFolderInfo ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### ENUM CamelStreamBufferMode ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_stream_filter_add ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_stream_fs_new_with_name ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_stream_mem_new ##### -->
<para>
</para>
-@parent:
-@written:
<!-- ##### FUNCTION camel_stream_null_new ##### -->
<para>
</para>
-@parent:
-@sockfd:
-@childpid:
<!-- ##### FUNCTION camel_stream_process_new ##### -->
<para>
</para>
-@parent:
-@stream:
<!-- ##### ENUM CamelStreamVFSOpenMethod ##### -->
<para>
</para>
-@parent:
-@eos:
<!-- ##### FUNCTION camel_stream_read ##### -->
<para>
</para>
-@parent:
-@sockfd:
-@is_nonblocking:
<!-- ##### FUNCTION camel_tcp_stream_raw_new ##### -->
<para>
</para>
-@parent:
<!-- ##### ENUM CamelSockOpt ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### STRUCT CamelTextIndexCursor ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### STRUCT CamelTextIndexKeyCursor ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### STRUCT CamelTextIndexName ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_text_index_new ##### -->
<para>
</para>
-@parent:
-@priv:
<!-- ##### FUNCTION camel_transport_send_to ##### -->
<para>
+<!-- ##### SECTION ./tmpl/address-data.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/address-data.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/address-data.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/address-data.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/address-data.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/address-data.sgml:Title ##### -->
+address-data
+
+
+<!-- ##### SECTION ./tmpl/addresses.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/addresses.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/addresses.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/addresses.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/addresses.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/addresses.sgml:Title ##### -->
+addresses
+
+
<!-- ##### SECTION ./tmpl/camel-digest-folder.sgml:Long_Description ##### -->
<para>
CamelDigestSummary
-<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-folder.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-folder.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-folder.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:Title ##### -->
-camel-groupwise-private
+<!-- ##### SECTION ./tmpl/camel-groupwise-folder.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:Long_Description ##### -->
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-folder.sgml:Title ##### -->
+CamelGroupwiseFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-journal.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-journal.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-journal.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-journal.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:Title ##### -->
-camel-imap-private
+<!-- ##### SECTION ./tmpl/camel-groupwise-journal.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:Long_Description ##### -->
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-journal.sgml:Title ##### -->
+CamelGroupwiseJournal
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:Title ##### -->
-camel-imap-types
+<!-- ##### SECTION ./tmpl/camel-groupwise-private.sgml:Title ##### -->
+camel-groupwise-private
-<!-- ##### SECTION ./tmpl/camel-local-private.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-store-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-store-summary.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-local-private.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-store-summary.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-local-private.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-store-summary.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-local-private.sgml:Title ##### -->
-camel-local-private
+<!-- ##### SECTION ./tmpl/camel-groupwise-store-summary.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Long_Description ##### -->
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-store-summary.sgml:Title ##### -->
+CamelGroupwiseStoreSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-store.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-store.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-store.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Stability_Level ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-store.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Title ##### -->
-camel-md5-utils
+<!-- ##### SECTION ./tmpl/camel-groupwise-store.sgml:Title ##### -->
+CamelGroupwiseStore
-<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-summary.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-summary.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-summary.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Stability_Level ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-summary.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Title ##### -->
-camel-mime-part-utils
+<!-- ##### SECTION ./tmpl/camel-groupwise-summary.sgml:Title ##### -->
+CamelGroupwiseSummary
-<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-transport.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-transport.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-news-address.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-transport.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-transport.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Stability_Level ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-transport.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Title ##### -->
-CamelNewsAddress
+<!-- ##### SECTION ./tmpl/camel-groupwise-transport.sgml:Title ##### -->
+CamelGroupwiseTransport
-<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-utils.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-utils.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-utils.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-groupwise-utils.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:Title ##### -->
-camel-nntp-private
+<!-- ##### SECTION ./tmpl/camel-groupwise-utils.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:Long_Description ##### -->
+
+<!-- ##### SECTION ./tmpl/camel-groupwise-utils.sgml:Title ##### -->
+camel-groupwise-utils
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-command.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-command.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-command.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-command.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:Title ##### -->
-camel-nntp-types
+<!-- ##### SECTION ./tmpl/camel-imap-command.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-process.sgml:Long_Description ##### -->
+
+<!-- ##### SECTION ./tmpl/camel-imap-command.sgml:Title ##### -->
+camel-imap-command
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-folder.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-process.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-folder.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-process.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-folder.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-process.sgml:Stability_Level ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-folder.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-process.sgml:Title ##### -->
-camel-process
+<!-- ##### SECTION ./tmpl/camel-imap-folder.sgml:Title ##### -->
+CamelImapFolder
-<!-- ##### SECTION ./tmpl/camel-search-private.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-journal.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-journal.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-search-private.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-journal.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-search-private.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-journal.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-search-private.sgml:Title ##### -->
-camel-search-private
+<!-- ##### SECTION ./tmpl/camel-imap-journal.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Long_Description ##### -->
+
+<!-- ##### SECTION ./tmpl/camel-imap-journal.sgml:Title ##### -->
+CamelImapJournal
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-message-cache.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-message-cache.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-message-cache.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-message-cache.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Stability_Level ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-message-cache.sgml:Stability_Level ##### -->
-<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Title ##### -->
-camel-search-sql-sexp.h
+<!-- ##### SECTION ./tmpl/camel-imap-message-cache.sgml:Title ##### -->
+CamelImapMessageCache
-<!-- ##### SECTION ./tmpl/camel-types.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-types.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/camel-types.sgml:Short_Description ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:Short_Description ##### -->
-<!-- ##### SECTION ./tmpl/camel-types.sgml:Title ##### -->
-camel-types
+<!-- ##### SECTION ./tmpl/camel-imap-private.sgml:Title ##### -->
+camel-imap-private
-<!-- ##### MACRO CAMEL_GROUPWISE_FOLDER_LOCK ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-search.sgml:Image ##### -->
-</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_GROUPWISE_FOLDER_UNLOCK ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-search.sgml:Long_Description ##### -->
<para>
</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_IMAP4_FOLDER_MARKED ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-search.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### MACRO CAMEL_IMAP4_FOLDER_UNMARKED ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-search.sgml:Short_Description ##### -->
-</para>
-<!-- ##### MACRO CAMEL_IMAP4_MESSAGE_RECENT ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-search.sgml:Stability_Level ##### -->
-</para>
-<!-- ##### MACRO CAMEL_IMAP_FOLDER_LOCK ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-search.sgml:Title ##### -->
+CamelImapSearch
-</para>
-@f:
-@l:
+<!-- ##### SECTION ./tmpl/camel-imap-store-summary.sgml:Image ##### -->
-<!-- ##### MACRO CAMEL_IMAP_FOLDER_UNLOCK ##### -->
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-store-summary.sgml:Long_Description ##### -->
<para>
</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_IMAP_MESSAGE_RECENT ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-store-summary.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### MACRO CAMEL_IMAP_WRAPPER_LOCK ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-store-summary.sgml:Short_Description ##### -->
-</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_IMAP_WRAPPER_UNLOCK ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-store-summary.sgml:Stability_Level ##### -->
-</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_INTERFACE_TYPE ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-store-summary.sgml:Title ##### -->
+CamelImapStoreSummary
-</para>
+<!-- ##### SECTION ./tmpl/camel-imap-store.sgml:Image ##### -->
-<!-- ##### MACRO CAMEL_LOCAL_FOLDER_LOCK ##### -->
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-store.sgml:Long_Description ##### -->
<para>
</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_LOCAL_FOLDER_UNLOCK ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-store.sgml:See_Also ##### -->
<para>
</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_MAKE_CLASS ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-store.sgml:Short_Description ##### -->
-</para>
-@type:
-@tname:
-@parent:
-@pname:
-<!-- ##### MACRO CAMEL_NNTP_FOLDER_LOCK ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-store.sgml:Stability_Level ##### -->
-</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_NNTP_FOLDER_UNLOCK ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-store.sgml:Title ##### -->
+CamelImapStore
-</para>
-@f:
-@l:
+<!-- ##### SECTION ./tmpl/camel-imap-summary.sgml:Image ##### -->
-<!-- ##### MACRO CAMEL_NNTP_STORE_LOCK ##### -->
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-summary.sgml:Long_Description ##### -->
<para>
</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_NNTP_STORE_UNLOCK ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-summary.sgml:See_Also ##### -->
<para>
</para>
-@f:
-@l:
-<!-- ##### MACRO CAMEL_OBJECT_TYPE ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-summary.sgml:Short_Description ##### -->
-</para>
-<!-- ##### ARG CamelCipherContext:session ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/camel-imap-summary.sgml:Stability_Level ##### -->
-</para>
-<!-- ##### ARG CamelDataCache:path ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-summary.sgml:Title ##### -->
+CamelImapSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### STRUCT CamelDigestFolder ##### -->
+<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:See_Also ##### -->
<para>
</para>
-@parent:
+
+<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-types.sgml:Title ##### -->
+camel-imap-types
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-utils.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-utils.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-utils.sgml:Title ##### -->
+camel-imap-utils
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-wrapper.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-wrapper.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-wrapper.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-wrapper.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-wrapper.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap-wrapper.sgml:Title ##### -->
+CamelImapWrapper
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-command.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-command.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-command.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-command.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-command.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-command.sgml:Title ##### -->
+camel-imap4-command
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-engine.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-engine.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-engine.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-engine.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-engine.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-engine.sgml:Title ##### -->
+CamelIMAP4Engine
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-folder.sgml:Title ##### -->
+CamelIMAP4Folder
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-journal.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-journal.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-journal.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-journal.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-journal.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-journal.sgml:Title ##### -->
+CamelIMAP4Journal
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-search.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-search.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-search.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-search.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-search.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-search.sgml:Title ##### -->
+CamelIMAP4Search
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-specials.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-specials.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-specials.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-specials.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-specials.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-specials.sgml:Title ##### -->
+camel-imap4-specials
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store-summary.sgml:Title ##### -->
+CamelIMAP4StoreSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-store.sgml:Title ##### -->
+CamelIMAP4Store
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-stream.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-stream.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-stream.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-stream.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-stream.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-stream.sgml:Title ##### -->
+CamelIMAP4Stream
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-summary.sgml:Title ##### -->
+CamelIMAP4Summary
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-utils.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-utils.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-imap4-utils.sgml:Title ##### -->
+camel-imap4-utils
+
+
+<!-- ##### SECTION ./tmpl/camel-local-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-folder.sgml:Title ##### -->
+CamelLocalFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-local-private.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-private.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-private.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-private.sgml:Title ##### -->
+camel-local-private
+
+
+<!-- ##### SECTION ./tmpl/camel-local-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-store.sgml:Title ##### -->
+CamelLocalStore
+
+
+<!-- ##### SECTION ./tmpl/camel-local-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-local-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-local-summary.sgml:Title ##### -->
+CamelLocalSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-folder.sgml:Title ##### -->
+CamelMaildirFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-store.sgml:Title ##### -->
+CamelMaildirStore
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-maildir-summary.sgml:Title ##### -->
+CamelMaildirSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-folder.sgml:Title ##### -->
+CamelMboxFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-store.sgml:Title ##### -->
+CamelMboxStore
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mbox-summary.sgml:Title ##### -->
+CamelMboxSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-md5-utils.sgml:Title ##### -->
+camel-md5-utils
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-folder.sgml:Title ##### -->
+CamelMhFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-store.sgml:Title ##### -->
+CamelMhStore
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mh-summary.sgml:Title ##### -->
+CamelMhSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-mime-part-utils.sgml:Title ##### -->
+camel-mime-part-utils
+
+
+<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-news-address.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-news-address.sgml:Title ##### -->
+CamelNewsAddress
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-auth.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-auth.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-auth.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-auth.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-auth.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-auth.sgml:Title ##### -->
+camel-nntp-auth
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-folder.sgml:Title ##### -->
+CamelNNTPFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-grouplist.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-grouplist.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-grouplist.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-grouplist.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-grouplist.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-grouplist.sgml:Title ##### -->
+camel-nntp-grouplist
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-newsrc.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-newsrc.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-newsrc.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-newsrc.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-newsrc.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-newsrc.sgml:Title ##### -->
+camel-nntp-newsrc
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-private.sgml:Title ##### -->
+camel-nntp-private
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-resp-codes.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-resp-codes.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-resp-codes.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-resp-codes.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-resp-codes.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-resp-codes.sgml:Title ##### -->
+camel-nntp-resp-codes
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store-summary.sgml:Title ##### -->
+CamelNNTPStoreSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-store.sgml:Title ##### -->
+CamelNNTPStore
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-stream.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-stream.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-stream.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-stream.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-stream.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-stream.sgml:Title ##### -->
+CamelNNTPStream
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-summary.sgml:Title ##### -->
+CamelNNTPSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-types.sgml:Title ##### -->
+camel-nntp-types
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-utils.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-utils.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-nntp-utils.sgml:Title ##### -->
+camel-nntp-utils
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-engine.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-engine.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-engine.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-engine.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-engine.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-engine.sgml:Title ##### -->
+CamelPOP3Engine
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-folder.sgml:Title ##### -->
+CamelPOP3Folder
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-store.sgml:Title ##### -->
+CamelPOP3Store
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-stream.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-stream.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-stream.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-stream.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-stream.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-pop3-stream.sgml:Title ##### -->
+CamelPOP3Stream
+
+
+<!-- ##### SECTION ./tmpl/camel-process.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-process.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-process.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-process.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-process.sgml:Title ##### -->
+camel-process
+
+
+<!-- ##### SECTION ./tmpl/camel-search-private.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-search-private.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-search-private.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-search-private.sgml:Title ##### -->
+camel-search-private
+
+
+<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-search-sql-sexp.h.sgml:Title ##### -->
+camel-search-sql-sexp.h
+
+
+<!-- ##### SECTION ./tmpl/camel-sendmail-transport.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-sendmail-transport.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-sendmail-transport.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-sendmail-transport.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-sendmail-transport.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-sendmail-transport.sgml:Title ##### -->
+CamelSendmailTransport
+
+
+<!-- ##### SECTION ./tmpl/camel-smtp-transport.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-smtp-transport.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-smtp-transport.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-smtp-transport.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-smtp-transport.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-smtp-transport.sgml:Title ##### -->
+CamelSmtpTransport
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-folder.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-folder.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-folder.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-folder.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-folder.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-folder.sgml:Title ##### -->
+CamelSpoolFolder
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-store.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-store.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-store.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-store.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-store.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-store.sgml:Title ##### -->
+CamelSpoolStore
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-summary.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-summary.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-summary.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-summary.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-summary.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-spool-summary.sgml:Title ##### -->
+CamelSpoolSummary
+
+
+<!-- ##### SECTION ./tmpl/camel-test-provider.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-test-provider.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-test-provider.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-test-provider.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-test-provider.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-test-provider.sgml:Title ##### -->
+camel-test-provider
+
+
+<!-- ##### SECTION ./tmpl/camel-test.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-test.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-test.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-test.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-test.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-test.sgml:Title ##### -->
+camel-test
+
+
+<!-- ##### SECTION ./tmpl/camel-types.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-types.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/camel-types.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/camel-types.sgml:Title ##### -->
+camel-types
+
+
+<!-- ##### SECTION ./tmpl/folders.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/folders.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/folders.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/folders.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/folders.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/folders.sgml:Title ##### -->
+folders
+
+
+<!-- ##### SECTION ./tmpl/messages.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/messages.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/messages.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/messages.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/messages.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/messages.sgml:Title ##### -->
+messages
+
+
+<!-- ##### SECTION ./tmpl/session.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/session.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/session.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/session.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/session.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/session.sgml:Title ##### -->
+CamelTestSession
+
+
+<!-- ##### SECTION ./tmpl/streams.sgml:Image ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/streams.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/streams.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/streams.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/streams.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/streams.sgml:Title ##### -->
+streams
+
+
+<!-- ##### MACRO CAMEL_CHECK_CAST ##### -->
+<para>
+
+</para>
+
+@obj:
+@ctype:
+@ptype:
+
+<!-- ##### MACRO CAMEL_CHECK_CLASS_CAST ##### -->
+<para>
+
+</para>
+
+@klass:
+@ctype:
+@ptype:
+
+<!-- ##### MACRO CAMEL_CHECK_CLASS_TYPE ##### -->
+<para>
+
+</para>
+
+@klass:
+@ctype:
+
+<!-- ##### MACRO CAMEL_CHECK_TYPE ##### -->
+<para>
+
+</para>
+
+@obj:
+@ctype:
+
+<!-- ##### MACRO CAMEL_GROUPWISE_FOLDER_LOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_GROUPWISE_FOLDER_UNLOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_IMAP4_FOLDER_MARKED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP4_FOLDER_UNMARKED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP4_MESSAGE_RECENT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_FOLDER_LOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_IMAP_FOLDER_MARKED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_FOLDER_UNLOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_IMAP_FOLDER_UNMARKED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_MESSAGE_RECENT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_SERVER_FLAGS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_CHECK_ALL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_CHECK_LSUB ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_FILTER_INBOX ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_FILTER_JUNK ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_FILTER_JUNK_INBOX ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_NAMESPACE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_STORE_OVERRIDE_NAMESPACE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_IMAP_WRAPPER_LOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_IMAP_WRAPPER_UNLOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_INTERFACE_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_INVALID_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_LOCAL_FOLDER_LOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_LOCAL_FOLDER_UNLOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_MAKE_CLASS ##### -->
+<para>
+
+</para>
+
+@type:
+@tname:
+@parent:
+@pname:
+
+<!-- ##### MACRO CAMEL_NNTP_ERR ##### -->
+<para>
+
+</para>
+
+@x:
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_LISTMOTD ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_LISTPNAMES ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_LISTSUBSCR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_OVER ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_SEARCH ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_SETGET ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_XACTIVE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_EXT_XPATTEXT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_NNTP_FAIL ##### -->
+<para>
+
+</para>
+
+@x:
+
+<!-- ##### MACRO CAMEL_NNTP_FOLDER_LOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_NNTP_FOLDER_UNLOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_NNTP_OK ##### -->
+<para>
+
+</para>
+
+@x:
+
+<!-- ##### MACRO CAMEL_NNTP_STORE_LOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_NNTP_STORE_UNLOCK ##### -->
+<para>
+
+</para>
+
+@f:
+@l:
+
+<!-- ##### MACRO CAMEL_OBJECT_GET_TYPE ##### -->
+<para>
+
+</para>
+
+@o:
+
+<!-- ##### MACRO CAMEL_OBJECT_TRACK_INSTANCES ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_OBJECT_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_SMTP_TRANSPORT_8BITMIME ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_SMTP_TRANSPORT_AUTH_EQUAL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_SMTP_TRANSPORT_ENHANCEDSTATUSCODES ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_SMTP_TRANSPORT_IS_ESMTP ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CAMEL_SMTP_TRANSPORT_STARTTLS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelDigestFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+
+<!-- ##### STRUCT CamelDigestStore ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelDigestSummary ##### -->
+<para>
+
+</para>
+
+@parent_object:
+
+<!-- ##### STRUCT CamelGroupwiseFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+@search:
+@journal:
+@cache:
+@need_rescan:
+@need_refresh:
+@read_only:
+
+<!-- ##### STRUCT CamelGroupwiseJournal ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelGroupwiseJournalEntry ##### -->
+<para>
+
+</para>
+
+@node:
+@type:
+@uid:
+@original_uid:
+@source_container:
+
+<!-- ##### STRUCT CamelGroupwiseMessageContentInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelGroupwiseMessageInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@server_flags:
+
+<!-- ##### STRUCT CamelGroupwiseStore ##### -->
+<para>
+
+</para>
+
+@parent:
+@summary:
+@root_container:
+@priv:
+@current_folder:
+@refresh_stamp:
+
+<!-- ##### STRUCT CamelGroupwiseStoreInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@full_name:
+
+<!-- ##### STRUCT CamelGroupwiseStoreNamespace ##### -->
+<para>
+
+</para>
+
+@path:
+@full_name:
+@sep:
+
+<!-- ##### STRUCT CamelGroupwiseStorePrivate ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelGroupwiseStoreSummary ##### -->
+<para>
+
+</para>
+
+@summary:
+@priv:
+@version:
+@capabilities:
+@namespace:
+
+<!-- ##### STRUCT CamelGroupwiseSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@time_string:
+@version:
+@validity:
+
+<!-- ##### STRUCT CamelGroupwiseTransport ##### -->
+<para>
+
+</para>
+
+@parent:
+@connected:
+
+<!-- ##### STRUCT CamelIMAP4Command ##### -->
+<para>
+
+</para>
+
+@node:
+@engine:
+@ref_count:
+@status:
+@result:
+@id:
+@tag:
+@resp_codes:
+@folder:
+@ex:
+@parts:
+@part:
+@untagged:
+@plus:
+@reset:
+@user_data:
+
+<!-- ##### STRUCT CamelIMAP4CommandPart ##### -->
+<para>
+
+</para>
+
+@next:
+@buffer:
+@buflen:
+@literal:
+
+<!-- ##### USER_FUNCTION CamelIMAP4CommandReset ##### -->
+<para>
+
+</para>
+
+@ic:
+@user_data:
+
+<!-- ##### STRUCT CamelIMAP4Engine ##### -->
+<para>
+
+</para>
+
+@parent:
+@reconnect:
+@reconnecting:
+@session:
+@service:
+@url:
+@state:
+@level:
+@capa:
+@maxlen:
+@maxlentype:
+@namespaces:
+@authtypes:
+@istream:
+@ostream:
+@tagprefix:
+@tag:
+@nextid:
+@folder:
+@queue:
+@current:
+
+<!-- ##### STRUCT CamelIMAP4Folder ##### -->
+<para>
+
+</para>
+
+@parent:
+@search:
+@journal:
+@cache:
+@cachedir:
+@utf7_name:
+@read_only:
+@enable_mlist:
+
+<!-- ##### STRUCT CamelIMAP4Journal ##### -->
+<para>
+
+</para>
+
+@parent:
+@failed:
+
+<!-- ##### STRUCT CamelIMAP4JournalEntry ##### -->
+<para>
+
+</para>
+
+@node:
+@type:
+
+<!-- ##### STRUCT CamelIMAP4Literal ##### -->
+<para>
+
+</para>
+
+@type:
+
+<!-- ##### STRUCT CamelIMAP4MessageContentInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelIMAP4MessageInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@server_flags:
+
+<!-- ##### STRUCT CamelIMAP4Namespace ##### -->
+<para>
+
+</para>
+
+@next:
+@path:
+@sep:
+
+<!-- ##### STRUCT CamelIMAP4NamespaceList ##### -->
+<para>
+
+</para>
+
+@personal:
+@other:
+@shared:
+
+<!-- ##### USER_FUNCTION CamelIMAP4PlusCallback ##### -->
+<para>
+
+</para>
+
+@engine:
+@ic:
+@linebuf:
+@linelen:
+@ex:
+@Returns:
+
+<!-- ##### USER_FUNCTION CamelIMAP4ReconnectFunc ##### -->
+<para>
+
+</para>
+
+@engine:
+@ex:
+@Returns:
+
+<!-- ##### STRUCT CamelIMAP4RespCode ##### -->
+<para>
+
+</para>
+
+@code:
+
+<!-- ##### STRUCT CamelIMAP4Search ##### -->
+<para>
+
+</para>
+
+@parent:
+@engine:
+@lastuid:
+@validity:
+@cache:
+@matches:
+@matches_hash:
+@matches_count:
+
+<!-- ##### STRUCT CamelIMAP4Store ##### -->
+<para>
+
+</para>
+
+@parent:
+@summary:
+@engine:
+@storage_path:
+
+<!-- ##### STRUCT CamelIMAP4StoreInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelIMAP4StoreSummary ##### -->
+<para>
+
+</para>
+
+@summary:
+@priv:
+@version:
+@namespaces:
+@capa:
+
+<!-- ##### STRUCT CamelIMAP4Stream ##### -->
+<para>
+
+</para>
+
+@parent:
+@stream:
+@disconnected:
+@have_unget:
+@mode:
+@eol:
+@literal:
+@realbuf:
+@inbuf:
+@inptr:
+@inend:
+@tokenbuf:
+@tokenptr:
+@tokenleft:
+@unget:
+
+<!-- ##### STRUCT CamelIMAP4Summary ##### -->
+<para>
+
+</para>
+
+@parent:
+@version:
+@exists:
+@recent:
+@unseen:
+@uidvalidity:
+@uidvalidity_changed:
+@update_flags:
+
+<!-- ##### USER_FUNCTION CamelIMAP4UntaggedCallback ##### -->
+<para>
+
+</para>
+
+@engine:
+@ic:
+@index:
+@token:
+@ex:
+@Returns:
+
+<!-- ##### STRUCT CamelIMAPJournal ##### -->
+<para>
+
+</para>
+
+@parent:
+@folders:
+@uidmap:
+@rp_in_progress:
+
+<!-- ##### STRUCT CamelIMAPJournalEntry ##### -->
+<para>
+
+</para>
+
+@node:
+@type:
+@uids:
+@append_uid:
+@dest_folder_name:
+@move:
+
+<!-- ##### STRUCT CamelISubscribe ##### -->
+<para>
+
+</para>
+
+@iface:
+@subscribed:
+@subscribe:
+@unsubscribe:
+
+<!-- ##### STRUCT CamelImapFolder ##### -->
+<para>
+
+</para>
+
+@parent_object:
+@priv:
+@search:
+@cache:
+@need_rescan:
+@need_refresh:
+@read_only:
+
+<!-- ##### STRUCT CamelImapFolderPrivate ##### -->
+<para>
+
+</para>
+
+@cache_lock:
+
+<!-- ##### STRUCT CamelImapMessageCache ##### -->
+<para>
+
+</para>
+
+@parent_object:
+@path:
+@parts:
+@cached:
+@max_uid:
+
+<!-- ##### STRUCT CamelImapMessageContentInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelImapMessageInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@server_flags:
+
+<!-- ##### STRUCT CamelImapMsg ##### -->
+<para>
+
+</para>
+
+@msg:
+@receive:
+@free:
+
+<!-- ##### STRUCT CamelImapResponse ##### -->
+<para>
+
+</para>
+
+@folder:
+@untagged:
+@status:
+
+<!-- ##### ENUM CamelImapResponseType ##### -->
+<para>
+
+</para>
+
+@CAMEL_IMAP_RESPONSE_ERROR:
+@CAMEL_IMAP_RESPONSE_CONTINUATION:
+@CAMEL_IMAP_RESPONSE_UNTAGGED:
+@CAMEL_IMAP_RESPONSE_TAGGED:
+
+<!-- ##### STRUCT CamelImapSearch ##### -->
+<para>
+
+</para>
+
+@parent:
+@lastuid:
+@validity:
+@cache:
+@matches_count:
+@matches:
+@matches_hash:
+
+<!-- ##### ENUM CamelImapServerLevel ##### -->
+<para>
+
+</para>
+
+@IMAP_LEVEL_UNKNOWN:
+@IMAP_LEVEL_IMAP4:
+@IMAP_LEVEL_IMAP4REV1:
+
+<!-- ##### STRUCT CamelImapStore ##### -->
+<para>
+
+</para>
+
+@parent_object:
+@istream:
+@ostream:
+@summary:
+@connected:
+@preauthed:
+@tag_prefix:
+@command:
+@current_folder:
+@server_level:
+@capabilities:
+@parameters:
+@braindamaged:
+@namespace:
+@dir_sep:
+@base_url:
+@storage_path:
+@authtypes:
+@renaming:
+
+<!-- ##### STRUCT CamelImapStoreInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@full_name:
+
+<!-- ##### STRUCT CamelImapStoreNamespace ##### -->
+<para>
+
+</para>
+
+@path:
+@full_name:
+@sep:
+@next:
+
+<!-- ##### STRUCT CamelImapStoreSummary ##### -->
+<para>
+
+</para>
+
+@summary:
+@priv:
+@version:
+@capabilities:
+@namespace:
+
+<!-- ##### STRUCT CamelImapSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@version:
+@validity:
+
+<!-- ##### STRUCT CamelImapWrapper ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+@folder:
+@uid:
+@part_spec:
+@part:
+
+<!-- ##### STRUCT CamelImapWrapperPrivate ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelInterface ##### -->
+<para>
+
+</para>
+
+@type:
+
+<!-- ##### STRUCT CamelIterator ##### -->
+<para>
+
+</para>
+
+@klass:
+
+<!-- ##### STRUCT CamelIteratorVTable ##### -->
+<para>
+
+</para>
+
+@free:
+@next:
+@reset:
+@length:
+
+<!-- ##### STRUCT CamelLocalFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+@flags:
+@locked:
+@locktype:
+@base_path:
+@folder_path:
+@summary_path:
+@index_path:
+@index:
+@search:
+@changes:
+
+<!-- ##### STRUCT CamelLocalFolderPrivate ##### -->
+<para>
+
+</para>
+
+@search_lock:
+
+<!-- ##### STRUCT CamelLocalMessageInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelLocalStore ##### -->
+<para>
+
+</para>
+
+@parent:
+@toplevel_dir:
+
+<!-- ##### STRUCT CamelLocalSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@version:
+@folder_path:
+@index:
+@index_force:
+@check_force:
+
+<!-- ##### STRUCT CamelMD5Context ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelMaildirFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelMaildirMessageContentInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelMaildirMessageInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@filename:
+
+<!-- ##### STRUCT CamelMaildirStore ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelMaildirSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+
+<!-- ##### STRUCT CamelMboxFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+@lockfd:
+
+<!-- ##### STRUCT CamelMboxMessageContentInfo ##### -->
+<para>
+
+</para>
+
+@info:
+
+<!-- ##### STRUCT CamelMboxMessageInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@frompos:
+
+<!-- ##### STRUCT CamelMboxStore ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelMboxSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@changes:
+@version:
+@folder_size:
+@xstatus:
+
+<!-- ##### STRUCT CamelMhFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelMhStore ##### -->
+<para>
+
+</para>
+
+@parent:
+@flags:
+
+<!-- ##### STRUCT CamelMhSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+
+<!-- ##### STRUCT CamelMimeFilterChomp ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelNNTPFolder ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+@changes:
+@storage_path:
+@search:
+
+<!-- ##### STRUCT CamelNNTPFolderPrivate ##### -->
+<para>
+
+</para>
+
+@search_lock:
+@cache_lock:
+
+<!-- ##### STRUCT CamelNNTPGroupList ##### -->
+<para>
+
+</para>
+
+@store:
+@time:
+@group_list:
+
+<!-- ##### STRUCT CamelNNTPGroupListEntry ##### -->
+<para>
+
+</para>
+
+@group_name:
+@low:
+@high:
+@flags:
+
+<!-- ##### TYPEDEF CamelNNTPNewsrc ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF CamelNNTPOverField ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelNNTPStore ##### -->
+<para>
+
+</para>
+
+@parent_object:
+@priv:
+@extensions:
+@posting_allowed:
+@do_short_folder_notation:
+@folder_hierarchy_relative:
+@summary:
+@stream:
+@mem:
+@cache:
+@current_folder:
+@storage_path:
+@base_url:
+@xover:
+
+<!-- ##### STRUCT CamelNNTPStoreClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+
+<!-- ##### STRUCT CamelNNTPStoreInfo ##### -->
+<para>
+
+</para>
+
+@info:
+@full_name:
+@first:
+@last:
+
+<!-- ##### STRUCT CamelNNTPStorePrivate ##### -->
+<para>
+
+</para>
+
+@dummy:
+
+<!-- ##### STRUCT CamelNNTPStoreSummary ##### -->
+<para>
+
+</para>
+
+@summary:
+@priv:
+@version:
+@last_newslist:
+
+<!-- ##### STRUCT CamelNNTPStream ##### -->
+<para>
+
+</para>
+
+@parent:
+@source:
+@mode:
+@state:
+@buf:
+@ptr:
+@end:
+@linebuf:
+@lineptr:
+@lineend:
+
+<!-- ##### STRUCT CamelNNTPSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+@version:
+@high:
+@low:
+
+<!-- ##### STRUCT CamelNewsAddress ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+
+<!-- ##### USER_FUNCTION CamelObjectClassFinalizeFunc ##### -->
+<para>
+
+</para>
+
+@Param1:
+
+<!-- ##### USER_FUNCTION CamelObjectClassInitFunc ##### -->
+<para>
+
+</para>
+
+@Param1:
+
+<!-- ##### USER_FUNCTION CamelObjectFinalizeFunc ##### -->
+<para>
+
+</para>
+
+@Param1:
+
+<!-- ##### ENUM CamelObjectFlags ##### -->
+<para>
+
+</para>
+
+@CAMEL_OBJECT_DESTROY:
+
+<!-- ##### USER_FUNCTION CamelObjectInitFunc ##### -->
+<para>
+
+</para>
+
+@Param1:
+@Param2:
+
+<!-- ##### STRUCT CamelObjectMeta ##### -->
+<para>
+
+</para>
+
+@next:
+@value:
+@name:
+
+<!-- ##### ENUM CamelOfflineAction ##### -->
+<para>
+
+</para>
+
+@CAMEL_IMAP_JOURNAL_ENTRY_EXPUNGE:
+@CAMEL_IMAP_JOURNAL_ENTRY_APPEND:
+@CAMEL_IMAP_JOURNAL_ENTRY_TRANSFER:
+
+<!-- ##### STRUCT CamelPOP3Command ##### -->
+<para>
+
+</para>
+
+@next:
+@prev:
+@flags:
+@state:
+@func:
+@func_data:
+@data_size:
+@data:
+
+<!-- ##### USER_FUNCTION CamelPOP3CommandFunc ##### -->
+<para>
+
+</para>
+
+@pe:
+@stream:
+@data:
+
+<!-- ##### STRUCT CamelPOP3Engine ##### -->
+<para>
+
+</para>
+
+@parent:
+@flags:
+@state:
+@auth:
+@capa:
+@apop:
+@line:
+@linelen:
+@stream:
+@sentlen:
+@active:
+@queue:
+@done:
+@current:
+
+<!-- ##### STRUCT CamelPOP3Folder ##### -->
+<para>
+
+</para>
+
+@parent:
+@uids:
+@uids_uid:
+@uids_id:
+
+<!-- ##### STRUCT CamelPOP3FolderInfo ##### -->
+<para>
+
+</para>
+
+@id:
+@size:
+@flags:
+@index:
+@uid:
+@err:
+@cmd:
+@stream:
+
+<!-- ##### STRUCT CamelPOP3Store ##### -->
+<para>
+
+</para>
+
+@parent:
+@engine:
+@cache:
+@delete_after:
+
+<!-- ##### STRUCT CamelPOP3Stream ##### -->
+<para>
+
+</para>
+
+@parent:
+@source:
+@mode:
+@state:
+@buf:
+@ptr:
+@end:
+@linebuf:
+@lineptr:
+@lineend:
+
+<!-- ##### STRUCT CamelSendmailTransport ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelSimpleDataWrapper ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelSmtpTransport ##### -->
+<para>
+
+</para>
+
+@parent:
+@istream:
+@ostream:
+@flags:
+@connected:
+@localaddr:
+@localaddrlen:
+@authtypes:
+
+<!-- ##### STRUCT CamelSpoolFolder ##### -->
+<para>
+
+</para>
+
+@parent:
@priv:
+@lockid:
+
+<!-- ##### STRUCT CamelSpoolStore ##### -->
+<para>
+
+</para>
+
+@parent:
+@type:
+
+<!-- ##### STRUCT CamelSpoolSummary ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### STRUCT CamelStreamDataWrapper ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT CamelTestSession ##### -->
+<para>
+
+</para>
+
+@parent:
+
+<!-- ##### TYPEDEF CamelType ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO DRAFT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### USER_FUNCTION EPathFindFoldersCallback ##### -->
+<para>
+
+</para>
+
+@physical_path:
+@path:
+@user_data:
+@Returns:
+
+<!-- ##### MACRO GW_PARAM_FILTER_INBOX ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP4_READ_BUFLEN ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP4_READ_PRELEN ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### USER_FUNCTION IMAPPathFindFoldersCallback ##### -->
+<para>
+
+</para>
+
+@physical_path:
+@path:
+@user_data:
+@Returns:
+
+<!-- ##### MACRO IMAP_CAPABILITY_IMAP4 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_IMAP4REV1 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_LITERALPLUS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_LOGINDISABLED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_NAMESPACE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_QUOTA ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_STARTTLS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_STATUS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_UIDPLUS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_XGWEXTENSIONS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_XGWMOVE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_useful_lsub ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_CAPABILITY_utf8_search ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_FETCH_ALL_HEADERS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_FETCH_MAILING_LIST_HEADERS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_FETCH_MINIMAL_HEADERS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_CHECK_ALL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_CHECK_LSUB ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_FILTER_INBOX ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_FILTER_JUNK ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_FILTER_JUNK_INBOX ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_OVERRIDE_NAMESPACE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO IMAP_PARAM_SUBSCRIPTIONS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NI_MAXHOST ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NI_MAXSERV ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_ARTICLE_FOLLOWS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_AUTH_ACCEPTED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_AUTH_CONTINUE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_AUTH_REJECTED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_AUTH_REQUIRED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_DATA_FOLLOWS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_DATE_SIZE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_EXTENSIONS_SUPPORTED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_GREETING_NO_POSTING ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_GREETING_POSTING_OK ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_GROUP_SELECTED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_HEAD_FOLLOWS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_LIST_FOLLOWS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_NEW_ARTICLE_LIST_FOLLOWS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_NEW_GROUP_LIST_FOLLOWS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_NO_PERMISSION ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_NO_SUCH_ARTICLE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_NO_SUCH_GROUP ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NNTP_PROTOCOL_ERROR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PERSONAL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO RECEIVED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO SEEKABLE_SUBSTREAM_WAYS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO SENT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO SET_CONTENT_WAYS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO STATUS_PINE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_AUTODELETE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_DELAY_UNTIL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_EXPIRE_AFTER ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_REPLY_CONVENIENT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_REPLY_WITHIN ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_RETURN_NOTIFY_DELETE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_RETURN_NOTIFY_OPEN ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_SEND_OPTIONS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_SEND_OPT_PRIORITY ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_SEND_OPT_SECURITY ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO X_TRACK_WHEN ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF _CamelNNTPGroupList ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF _CamelNNTPGroupListEntry ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION add_recipients ##### -->
+<para>
+
+</para>
+
+@recipient_list:
+@recipients:
+@recipient_type:
+@Returns:
+
+<!-- ##### STRUCT addrinfo ##### -->
+<para>
+
+</para>
+
+@ai_flags:
+@ai_family:
+@ai_socktype:
+@ai_protocol:
+@ai_addrlen:
+@ai_addr:
+@ai_canonname:
+@ai_next:
+
+<!-- ##### FUNCTION camel_base64_decode_simple ##### -->
+<para>
+
+</para>
+
+@data:
+@len:
+@Returns:
+
+<!-- ##### FUNCTION camel_base64_decode_step ##### -->
+<para>
+
+</para>
+
+@in:
+@len:
+@out:
+@state:
+@save:
+@Returns:
+
+<!-- ##### FUNCTION camel_base64_encode_close ##### -->
+<para>
+
+</para>
+
+@in:
+@inlen:
+@break_lines:
+@out:
+@state:
+@save:
+@Returns:
+
+<!-- ##### FUNCTION camel_base64_encode_simple ##### -->
+<para>
+
+</para>
+
+@data:
+@len:
+@Returns:
+
+<!-- ##### FUNCTION camel_base64_encode_step ##### -->
+<para>
+
+</para>
+
+@in:
+@inlen:
+@break_lines:
+@out:
+@state:
+@save:
+@Returns:
+
+<!-- ##### FUNCTION camel_block_file_get_type ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_cipher_context_construct ##### -->
+<para>
+
+</para>
+
+@context:
+@session:
+
+<!-- ##### FUNCTION camel_data_cache_clear ##### -->
+<para>
+
+</para>
+
+@cache:
+@path:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_data_cache_rename ##### -->
+<para>
+
+</para>
+
+@cache:
+@old:
+@new:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_digest_folder_new ##### -->
+<para>
+
+</para>
+
+@parent_store:
+@message:
+@Returns:
+
+<!-- ##### FUNCTION camel_digest_store_new ##### -->
+<para>
+
+</para>
+
+@url:
+@Returns:
+
+<!-- ##### FUNCTION camel_digest_summary_new ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_file_util_decode_size_t ##### -->
+<para>
+
+</para>
+
+@in:
+@dest:
+@Returns:
+
+<!-- ##### FUNCTION camel_file_util_encode_size_t ##### -->
+<para>
+
+</para>
+
+@out:
+@value:
+@Returns:
+
+<!-- ##### FUNCTION camel_filter_driver_expand_option ##### -->
+<para>
+
+</para>
+
+@d:
+@s:
+@action:
+@op:
+
+<!-- ##### FUNCTION camel_filter_driver_rule_count ##### -->
+<para>
+
+</para>
+
+@d:
+@Returns:
+
+<!-- ##### FUNCTION camel_filter_driver_rule_get ##### -->
+<para>
+
+</para>
+
+@d:
+@n:
+@Returns:
+
+<!-- ##### FUNCTION camel_folder_summary_array_free ##### -->
+<para>
+
+</para>
+
+@summary:
+@array:
+
+<!-- ##### FUNCTION camel_groupwise_journal_append ##### -->
+<para>
+
+</para>
+
+@journal:
+@message:
+@mi:
+@appended_uid:
+@ex:
+
+<!-- ##### FUNCTION camel_groupwise_journal_new ##### -->
+<para>
+
+</para>
+
+@folder:
+@filename:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_journal_transfer ##### -->
+<para>
+
+</para>
+
+@journal:
+@source_folder:
+@message:
+@mi:
+@orginal_uid:
+@transferred_uid:
+@ex:
+
+<!-- ##### FUNCTION camel_groupwise_store_connected ##### -->
+<para>
+
+</para>
+
+@store:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_container_id_lookup ##### -->
+<para>
+
+</para>
+
+@gw_store:
+@folder_name:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_folder_lookup ##### -->
+<para>
+
+</para>
+
+@gw_store:
+@container_id:
+@Returns:
+
+<!-- ##### MACRO camel_groupwise_store_info_full_name ##### -->
+<para>
+
+</para>
+
+@s:
+@i:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_add_from_full ##### -->
+<para>
+
+</para>
+
+@s:
+@full:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_full_from_path ##### -->
+<para>
+
+</para>
+
+@s:
+@path:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_full_name ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_full_to_path ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_namespace_find_path ##### -->
+<para>
+
+</para>
+
+@s:
+@path:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_namespace_new ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_namespace_set ##### -->
+<para>
+
+</para>
+
+@s:
+@ns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_new ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_store_summary_path_to_full ##### -->
+<para>
+
+</para>
+
+@s:
+@path:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_summary_new ##### -->
+<para>
+
+</para>
+
+@folder:
+@filename:
+@Returns:
+
+<!-- ##### FUNCTION camel_groupwise_util_item_from_message ##### -->
+<para>
+
+</para>
+
+@cnc:
+@message:
+@from:
+@Returns:
+
+<!-- ##### FUNCTION camel_gw_folder_new ##### -->
+<para>
+
+</para>
+
+@store:
+@folder_dir:
+@folder_name:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_gw_summary_add_offline ##### -->
+<para>
+
+</para>
+
+@summary:
+@uid:
+@messgae:
+@info:
+
+<!-- ##### FUNCTION camel_gw_summary_add_offline_uncached ##### -->
+<para>
+
+</para>
+
+@summary:
+@uid:
+@info:
+
+<!-- ##### FUNCTION camel_imap4_build_folder_info_tree ##### -->
+<para>
+
+</para>
+
+@array:
+@top:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_command_new ##### -->
+<para>
+
+</para>
+
+@engine:
+@folder:
+@format:
+@Varargs:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_command_newv ##### -->
+<para>
+
+</para>
+
+@engine:
+@folder:
+@format:
+@args:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_command_ref ##### -->
+<para>
+
+</para>
+
+@ic:
+
+<!-- ##### FUNCTION camel_imap4_command_register_untagged ##### -->
+<para>
+
+</para>
+
+@ic:
+@atom:
+@untagged:
+
+<!-- ##### FUNCTION camel_imap4_command_reset ##### -->
+<para>
+
+</para>
+
+@ic:
+
+<!-- ##### FUNCTION camel_imap4_command_step ##### -->
+<para>
+
+</para>
+
+@ic:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_command_unref ##### -->
+<para>
+
+</para>
+
+@ic:
+
+<!-- ##### FUNCTION camel_imap4_engine_capability ##### -->
+<para>
+
+</para>
+
+@engine:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_dequeue ##### -->
+<para>
+
+</para>
+
+@engine:
+@ic:
+
+<!-- ##### FUNCTION camel_imap4_engine_disconnect ##### -->
+<para>
+
+</para>
+
+@engine:
+
+<!-- ##### FUNCTION camel_imap4_engine_eat_line ##### -->
+<para>
+
+</para>
+
+@engine:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_handle_untagged ##### -->
+<para>
+
+</para>
+
+@engine:
+@ex:
+
+<!-- ##### FUNCTION camel_imap4_engine_handle_untagged_1 ##### -->
+<para>
+
+</para>
+
+@engine:
+@token:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_iterate ##### -->
+<para>
+
+</para>
+
+@engine:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_line ##### -->
+<para>
+
+</para>
+
+@engine:
+@line:
+@len:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_literal ##### -->
+<para>
+
+</para>
+
+@engine:
+@literal:
+@len:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_namespace ##### -->
+<para>
+
+</para>
+
+@engine:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_new ##### -->
+<para>
+
+</para>
+
+@service:
+@reconnect:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_next_token ##### -->
+<para>
+
+</para>
+
+@engine:
+@token:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_nstring ##### -->
+<para>
+
+</para>
+
+@engine:
+@nstring:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_parse_resp_code ##### -->
+<para>
+
+</para>
+
+@engine:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_prequeue ##### -->
+<para>
+
+</para>
+
+@engine:
+@folder:
+@format:
+@Varargs:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_queue ##### -->
+<para>
+
+</para>
+
+@engine:
+@folder:
+@format:
+@Varargs:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_engine_select_folder ##### -->
+<para>
+
+</para>
+
+@engine:
+@folder:
+@ex:
+@Returns:
+
+<!-- ##### ENUM camel_imap4_engine_t ##### -->
+<para>
+
+</para>
+
+@CAMEL_IMAP4_ENGINE_DISCONNECTED:
+@CAMEL_IMAP4_ENGINE_CONNECTED:
+@CAMEL_IMAP4_ENGINE_PREAUTH:
+@CAMEL_IMAP4_ENGINE_AUTHENTICATED:
+@CAMEL_IMAP4_ENGINE_SELECTED:
+
+<!-- ##### FUNCTION camel_imap4_engine_take_stream ##### -->
+<para>
+
+</para>
+
+@engine:
+@stream:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_flags_diff ##### -->
+<para>
+
+</para>
+
+@diff:
+@old:
+@new:
+
+<!-- ##### FUNCTION camel_imap4_flags_merge ##### -->
+<para>
+
+</para>
+
+@diff:
+@flags:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_folder_new ##### -->
+<para>
+
+</para>
+
+@store:
+@full_name:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_folder_utf7_name ##### -->
+<para>
+
+</para>
+
+@folder:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_get_path_delim ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_get_uid_set ##### -->
+<para>
+
+</para>
+
+@engine:
+@summary:
+@infos:
+@cur:
+@linelen:
+@set:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_journal_append ##### -->
+<para>
+
+</para>
+
+@journal:
+@message:
+@mi:
+@appended_uid:
+@ex:
+
+<!-- ##### FUNCTION camel_imap4_journal_new ##### -->
+<para>
+
+</para>
+
+@folder:
+@filename:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_journal_readd_failed ##### -->
+<para>
+
+</para>
+
+@journal:
+
+<!-- ##### ENUM camel_imap4_level_t ##### -->
+<para>
+
+</para>
+
+@CAMEL_IMAP4_LEVEL_UNKNOWN:
+@CAMEL_IMAP4_LEVEL_IMAP4:
+@CAMEL_IMAP4_LEVEL_IMAP4REV1:
+
+<!-- ##### STRUCT camel_imap4_list_t ##### -->
+<para>
+
+</para>
+
+@flags:
+@delim:
+@name:
+
+<!-- ##### FUNCTION camel_imap4_merge_flags ##### -->
+<para>
+
+</para>
+
+@original:
+@local:
+@server:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_namespace_clear ##### -->
+<para>
+
+</para>
+
+@ns:
+
+<!-- ##### FUNCTION camel_imap4_namespace_list_copy ##### -->
+<para>
+
+</para>
+
+@nsl:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_namespace_list_free ##### -->
+<para>
+
+</para>
+
+@nsl:
+
+<!-- ##### FUNCTION camel_imap4_parse_flags_list ##### -->
+<para>
+
+</para>
+
+@engine:
+@flags:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_resp_code_free ##### -->
+<para>
+
+</para>
+
+@rcode:
+
+<!-- ##### ENUM camel_imap4_resp_code_t ##### -->
+<para>
+
+</para>
+
+@CAMEL_IMAP4_RESP_CODE_ALERT:
+@CAMEL_IMAP4_RESP_CODE_BADCHARSET:
+@CAMEL_IMAP4_RESP_CODE_CAPABILITY:
+@CAMEL_IMAP4_RESP_CODE_PARSE:
+@CAMEL_IMAP4_RESP_CODE_PERM_FLAGS:
+@CAMEL_IMAP4_RESP_CODE_READONLY:
+@CAMEL_IMAP4_RESP_CODE_READWRITE:
+@CAMEL_IMAP4_RESP_CODE_TRYCREATE:
+@CAMEL_IMAP4_RESP_CODE_UIDNEXT:
+@CAMEL_IMAP4_RESP_CODE_UIDVALIDITY:
+@CAMEL_IMAP4_RESP_CODE_UNSEEN:
+@CAMEL_IMAP4_RESP_CODE_NEWNAME:
+@CAMEL_IMAP4_RESP_CODE_APPENDUID:
+@CAMEL_IMAP4_RESP_CODE_COPYUID:
+@CAMEL_IMAP4_RESP_CODE_UNKNOWN:
+
+<!-- ##### FUNCTION camel_imap4_search_new ##### -->
+<para>
+
+</para>
+
+@engine:
+@cachedir:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_specials_init ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT camel_imap4_status_attr_t ##### -->
+<para>
+
+</para>
+
+@next:
+@type:
+@value:
+
+<!-- ##### FUNCTION camel_imap4_status_free ##### -->
+<para>
+
+</para>
+
+@status:
+
+<!-- ##### STRUCT camel_imap4_status_t ##### -->
+<para>
+
+</para>
+
+@attr_list:
+@mailbox:
+
+<!-- ##### FUNCTION camel_imap4_store_summary_get_folder_info ##### -->
+<para>
+
+</para>
+
+@s:
+@top:
+@flags:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_store_summary_new ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_store_summary_note_info ##### -->
+<para>
+
+</para>
+
+@s:
+@fi:
+
+<!-- ##### FUNCTION camel_imap4_store_summary_set_capabilities ##### -->
+<para>
+
+</para>
+
+@s:
+@capa:
+
+<!-- ##### FUNCTION camel_imap4_store_summary_set_namespaces ##### -->
+<para>
+
+</para>
+
+@s:
+@ns:
+
+<!-- ##### FUNCTION camel_imap4_store_summary_unnote_info ##### -->
+<para>
+
+</para>
+
+@s:
+@fi:
+
+<!-- ##### FUNCTION camel_imap4_stream_line ##### -->
+<para>
+
+</para>
+
+@stream:
+@line:
+@len:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_stream_literal ##### -->
+<para>
+
+</para>
+
+@stream:
+@literal:
+@len:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_stream_new ##### -->
+<para>
+
+</para>
+
+@stream:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_stream_next_token ##### -->
+<para>
+
+</para>
+
+@stream:
+@token:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_stream_unget_token ##### -->
+<para>
+
+</para>
+
+@stream:
+@token:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_summary_expunge ##### -->
+<para>
+
+</para>
+
+@summary:
+@seqid:
+
+<!-- ##### FUNCTION camel_imap4_summary_flush_updates ##### -->
+<para>
+
+</para>
+
+@summary:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_summary_new ##### -->
+<para>
+
+</para>
+
+@folder:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_summary_set_exists ##### -->
+<para>
+
+</para>
+
+@summary:
+@exists:
+
+<!-- ##### FUNCTION camel_imap4_summary_set_recent ##### -->
+<para>
+
+</para>
+
+@summary:
+@recent:
+
+<!-- ##### FUNCTION camel_imap4_summary_set_uidnext ##### -->
+<para>
+
+</para>
+
+@summary:
+@uidnext:
+
+<!-- ##### FUNCTION camel_imap4_summary_set_uidvalidity ##### -->
+<para>
+
+</para>
+
+@summary:
+@uidvalidity:
+
+<!-- ##### FUNCTION camel_imap4_summary_set_unseen ##### -->
+<para>
+
+</para>
+
+@summary:
+@unseen:
+
+<!-- ##### STRUCT camel_imap4_token_t ##### -->
+<para>
+
+</para>
+
+@token:
+
+<!-- ##### FUNCTION camel_imap4_untagged_list ##### -->
+<para>
+
+</para>
+
+@engine:
+@ic:
+@index:
+@token:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_untagged_status ##### -->
+<para>
+
+</para>
+
+@engine:
+@ic:
+@index:
+@token:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap4_utils_set_unexpected_token_error ##### -->
+<para>
+
+</para>
+
+@ex:
+@engine:
+@token:
+
+<!-- ##### FUNCTION camel_imap_command ##### -->
+<para>
+
+</para>
+
+@store:
+@folder:
+@ex:
+@fmt:
+@Varargs:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_command_continuation ##### -->
+<para>
+
+</para>
+
+@store:
+@cmd:
+@cmdlen:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_command_response ##### -->
+<para>
+
+</para>
+
+@store:
+@response:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_command_start ##### -->
+<para>
+
+</para>
+
+@store:
+@folder:
+@ex:
+@fmt:
+@Varargs:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_folder_changed ##### -->
+<para>
+
+</para>
+
+@folder:
+@exists:
+@expunged:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_folder_fetch_data ##### -->
+<para>
+
+</para>
+
+@imap_folder:
+@uid:
+@section_text:
+@cache_only:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_folder_new ##### -->
+<para>
+
+</para>
+
+@parent:
+@folder_name:
+@folder_dir:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_folder_selected ##### -->
+<para>
+
+</para>
+
+@folder:
+@response:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_journal_close_folders ##### -->
+<para>
+
+</para>
+
+@journal:
+
+<!-- ##### FUNCTION camel_imap_journal_log ##### -->
+<para>
+
+</para>
+
+@journal:
+@action:
+@Varargs:
+
+<!-- ##### FUNCTION camel_imap_journal_new ##### -->
+<para>
+
+</para>
+
+@folder:
+@filename:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_journal_uidmap_add ##### -->
+<para>
+
+</para>
+
+@journal:
+@old_uid:
+@n_uid:
+
+<!-- ##### FUNCTION camel_imap_journal_uidmap_lookup ##### -->
+<para>
+
+</para>
+
+@journal:
+@uid:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_clear ##### -->
+<para>
+
+</para>
+
+@cache:
+
+<!-- ##### FUNCTION camel_imap_message_cache_copy ##### -->
+<para>
+
+</para>
+
+@source:
+@source_uid:
+@dest:
+@dest_uid:
+@ex:
+
+<!-- ##### FUNCTION camel_imap_message_cache_delete ##### -->
+<para>
+
+</para>
+
+@path:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_filter_cached ##### -->
+<para>
+
+</para>
+
+@Param1:
+@uids:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_get ##### -->
+<para>
+
+</para>
+
+@cache:
+@uid:
+@part_spec:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_get_filename ##### -->
+<para>
+
+</para>
+
+@cache:
+@uid:
+@part_spec:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_insert ##### -->
+<para>
+
+</para>
+
+@cache:
+@uid:
+@part_spec:
+@data:
+@len:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_insert_stream ##### -->
+<para>
+
+</para>
+
+@cache:
+@uid:
+@part_spec:
+@data_stream:
+@ex:
+
+<!-- ##### FUNCTION camel_imap_message_cache_insert_wrapper ##### -->
+<para>
+
+</para>
+
+@cache:
+@uid:
+@part_spec:
+@wrapper:
+@ex:
+
+<!-- ##### FUNCTION camel_imap_message_cache_max_uid ##### -->
+<para>
+
+</para>
+
+@cache:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_new ##### -->
+<para>
+
+</para>
+
+@path:
+@summary:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_message_cache_remove ##### -->
+<para>
+
+</para>
+
+@cache:
+@uid:
+
+<!-- ##### FUNCTION camel_imap_message_cache_set_path ##### -->
+<para>
+
+</para>
+
+@cache:
+@path:
+
+<!-- ##### FUNCTION camel_imap_msg_new ##### -->
+<para>
+
+</para>
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@CamelImapStore *store, struct _CamelImapMsg *m:
+@CamelImapStore *store, struct _CamelImapMsg *m:
+
+@size:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_msg_queue ##### -->
+<para>
+
+</para>
+
+@store:
+@msg:
+
+<!-- ##### FUNCTION camel_imap_response_extract ##### -->
+<para>
+
+</para>
+
+@store:
+@response:
+@type:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_response_extract_continuation ##### -->
+<para>
+
+</para>
+
+@store:
+@response:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_response_free ##### -->
+<para>
+
+</para>
+
+@store:
+@response:
+
+<!-- ##### FUNCTION camel_imap_response_free_without_processing ##### -->
+<para>
+
+</para>
+
+@store:
+@response:
+
+<!-- ##### FUNCTION camel_imap_search_new ##### -->
+<para>
+
+</para>
+
+@cachedir:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_connected ##### -->
+<para>
+
+</para>
+
+@store:
+@ex:
+@Returns:
+
+<!-- ##### MACRO camel_imap_store_info_full_name ##### -->
+<para>
+
+</para>
+
+@s:
+@i:
+
+<!-- ##### FUNCTION camel_imap_store_readline ##### -->
+<para>
+
+</para>
+
+@store:
+@dest:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_add_from_full ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_full_from_path ##### -->
+<para>
+
+</para>
+
+@s:
+@path:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_full_name ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_full_to_path ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_get_main_namespace ##### -->
+<para>
+
+</para>
+
+@s:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_namespace_add_secondary ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+
+<!-- ##### FUNCTION camel_imap_store_summary_namespace_find_full ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_namespace_find_path ##### -->
+<para>
+
+</para>
+
+@s:
+@path:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_namespace_new ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_namespace_set ##### -->
+<para>
+
+</para>
+
+@s:
+@ns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_namespace_set_main ##### -->
+<para>
+
+</para>
+
+@s:
+@full_name:
+@dir_sep:
+
+<!-- ##### FUNCTION camel_imap_store_summary_new ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_store_summary_path_to_full ##### -->
+<para>
+
+</para>
+
+@s:
+@path:
+@dir_sep:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_summary_add_offline ##### -->
+<para>
+
+</para>
+
+@summary:
+@uid:
+@message:
+@info:
+
+<!-- ##### FUNCTION camel_imap_summary_add_offline_uncached ##### -->
+<para>
+
+</para>
+
+@summary:
+@uid:
+@info:
+
+<!-- ##### FUNCTION camel_imap_summary_new ##### -->
+<para>
+
+</para>
+
+@folder:
+@filename:
+@Returns:
+
+<!-- ##### FUNCTION camel_imap_wrapper_new ##### -->
+<para>
+
+</para>
+
+@imap_folder:
+@type:
+@encoding:
+@uid:
+@part_spec:
+@part:
+@Returns:
+
+<!-- ##### FUNCTION camel_index_name_get_type ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_index_set_normalise ##### -->
+<para>
+
+</para>
+
+@idx:
+@func:
+@data:
+
+<!-- ##### FUNCTION camel_interface_cast ##### -->
+<para>
+
+</para>
+
+@klass:
+@ctype:
+@Returns:
+
+<!-- ##### FUNCTION camel_interface_is ##### -->
+<para>
+
+</para>
+
+@k:
+@ctype:
+@Returns:
+
+<!-- ##### FUNCTION camel_interface_register ##### -->
+<para>
+
+</para>
+
+@parent:
+@name:
+@classfuncs_size:
+@class_init:
+@class_finalize:
+@Returns:
+
+<!-- ##### VARIABLE camel_interface_type ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION camel_isubscribe_get_type ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_isubscribe_subscribe ##### -->
+<para>
+
+</para>
+
+@store:
+@folder_name:
+@ex:
+
+<!-- ##### FUNCTION camel_isubscribe_subscribed ##### -->
+<para>
+
+</para>
+
+@store:
+@name:
+@Returns:
+
+<!-- ##### FUNCTION camel_isubscribe_unsubscribe ##### -->
+<para>
+
+</para>
+
+@store:
+@folder_name:
+@ex:
+
+<!-- ##### FUNCTION camel_iterator_free ##### -->
+<para>
+
+</para>
+
+@it:
+
+<!-- ##### FUNCTION camel_iterator_length ##### -->
+<para>
+
+</para>
+
+@it:
+@Returns:
+
+<!-- ##### FUNCTION camel_iterator_new ##### -->
+<para>
+
+</para>
+
+@klass:
+@size:
+@Returns:
+
+<!-- ##### FUNCTION camel_iterator_next ##### -->
+<para>
+
+</para>
+
+@it:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_iterator_reset ##### -->
+<para>
+
+</para>
+
+@it:
+
+<!-- ##### FUNCTION camel_key_file_get_type ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_key_table_get_type ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION camel_local_folder_construct ##### -->
+<para>
+
+</para>
+
+@lf:
+@parent_store:
+@full_name:
+@flags:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_folder_lock ##### -->
+<para>
+
+</para>
+
+@lf:
+@type:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_folder_unlock ##### -->
+<para>
+
+</para>
+
+@lf:
+@Returns:
+
+<!-- ##### MACRO camel_local_store_get_full_path ##### -->
+<para>
+
+</para>
+
+@ls:
+@name:
+
+<!-- ##### MACRO camel_local_store_get_meta_path ##### -->
+<para>
+
+</para>
+
+@ls:
+@name:
+@ext:
+
+<!-- ##### FUNCTION camel_local_store_get_toplevel_dir ##### -->
+<para>
+
+</para>
+
+@store:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_summary_add ##### -->
+<para>
+
+</para>
+
+@cls:
+@msg:
+@info:
+@Param4:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_summary_check ##### -->
+<para>
+
+</para>
+
+@cls:
+@Param2:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_summary_check_force ##### -->
+<para>
+
+</para>
+
+@cls:
+
+<!-- ##### FUNCTION camel_local_summary_construct ##### -->
+<para>
+
+</para>
+
+@new:
+@filename:
+@local_name:
+@index:
+
+<!-- ##### FUNCTION camel_local_summary_decode_x_evolution ##### -->
+<para>
+
+</para>
+
+@cls:
+@xev:
+@info:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_summary_encode_x_evolution ##### -->
+<para>
+
+</para>
+
+@cls:
+@info:
+@Returns:
+
+<!-- ##### FUNCTION camel_local_summary_load ##### -->
+<para>
+
+</para>
+
+@cls:
+@forceindex:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelDigestStore ##### -->
+<!-- ##### FUNCTION camel_local_summary_sync ##### -->
<para>
</para>
-@parent:
+@cls:
+@expunge:
+@Param3:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelDigestSummary ##### -->
+<!-- ##### FUNCTION camel_local_summary_write_headers ##### -->
<para>
</para>
-@parent_object:
+@fd:
+@header:
+@xevline:
+@status:
+@xstatus:
+@Returns:
-<!-- ##### ARG CamelGpgContext:always-trust ##### -->
+<!-- ##### FUNCTION camel_maildir_folder_new ##### -->
<para>
</para>
+@parent_store:
+@full_name:
+@flags:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4Command ##### -->
+<!-- ##### MACRO camel_maildir_info_filename ##### -->
+<para>
+
+</para>
+
+@x:
+
+<!-- ##### MACRO camel_maildir_info_set_filename ##### -->
+<para>
+
+</para>
+
+@x:
+@s:
+
+<!-- ##### FUNCTION camel_maildir_summary_info_to_name ##### -->
+<para>
+
+</para>
+
+@info:
+@Returns:
+
+<!-- ##### FUNCTION camel_maildir_summary_name_to_info ##### -->
+<para>
+
+</para>
+
+@info:
+@name:
+@Returns:
+
+<!-- ##### FUNCTION camel_maildir_summary_new ##### -->
<para>
</para>
-@node:
-@engine:
-@ref_count:
-@status:
-@result:
-@id:
-@tag:
-@resp_codes:
@folder:
+@filename:
+@maildirdir:
+@index:
+@Returns:
+
+<!-- ##### FUNCTION camel_mbox_folder_new ##### -->
+<para>
+
+</para>
+
+@parent_store:
+@full_name:
+@flags:
@ex:
-@parts:
-@part:
-@untagged:
-@plus:
-@reset:
-@user_data:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4CommandPart ##### -->
+<!-- ##### FUNCTION camel_mbox_summary_new ##### -->
<para>
</para>
-@next:
-@buffer:
-@buflen:
-@literal:
+@Param1:
+@filename:
+@mbox_name:
+@index:
+@Returns:
-<!-- ##### USER_FUNCTION CamelIMAP4CommandReset ##### -->
+<!-- ##### FUNCTION camel_mbox_summary_sync_mbox ##### -->
<para>
</para>
-@ic:
-@user_data:
+@cls:
+@flags:
+@changeinfo:
+@fd:
+@fdout:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4Engine ##### -->
+<!-- ##### FUNCTION camel_mbox_summary_xstatus ##### -->
<para>
</para>
-@parent:
-@reconnect:
-@reconnecting:
-@session:
-@service:
-@url:
+@mbs:
@state:
-@level:
-@capa:
-@maxlen:
-@maxlentype:
-@namespaces:
-@authtypes:
-@istream:
-@ostream:
-@tagprefix:
-@tag:
-@nextid:
-@folder:
-@queue:
-@current:
-<!-- ##### STRUCT CamelIMAP4Folder ##### -->
+<!-- ##### FUNCTION camel_md5_final ##### -->
<para>
</para>
-@parent:
-@search:
-@journal:
-@cache:
-@cachedir:
-@utf7_name:
-@read_only:
-@enable_mlist:
+@ctx:
+@digest:
-<!-- ##### STRUCT CamelIMAP4Journal ##### -->
+<!-- ##### FUNCTION camel_md5_get_digest ##### -->
<para>
</para>
-@parent:
-@failed:
+@buffer:
+@buffer_size:
+@digest:
-<!-- ##### STRUCT CamelIMAP4JournalEntry ##### -->
+<!-- ##### FUNCTION camel_md5_get_digest_from_file ##### -->
<para>
</para>
-@node:
-@type:
+@filename:
+@digest:
-<!-- ##### STRUCT CamelIMAP4Literal ##### -->
+<!-- ##### FUNCTION camel_md5_init ##### -->
+<para>
+
+</para>
+
+@ctx:
+
+<!-- ##### FUNCTION camel_md5_update ##### -->
+<para>
+
+</para>
+
+@ctx:
+@buf:
+@len:
+
+<!-- ##### FUNCTION camel_medium_get_content_object ##### -->
+<para>
+
+</para>
+
+@medium:
+@Returns:
+
+<!-- ##### FUNCTION camel_medium_set_content_object ##### -->
+<para>
+
+</para>
+
+@medium:
+@content:
+
+<!-- ##### FUNCTION camel_mh_folder_new ##### -->
+<para>
+
+</para>
+
+@parent_store:
+@full_name:
+@flags:
+@ex:
+@Returns:
+
+<!-- ##### FUNCTION camel_mh_summary_new ##### -->
+<para>
+
+</para>
+
+@Param1:
+@filename:
+@mhdir:
+@index:
+@Returns:
+
+<!-- ##### FUNCTION camel_mime_filter_basic_new_type ##### -->
<para>
</para>
@type:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4MessageContentInfo ##### -->
+<!-- ##### FUNCTION camel_mime_filter_charset_new_convert ##### -->
<para>
</para>
-@info:
+@from_charset:
+@to_charset:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4MessageInfo ##### -->
+<!-- ##### FUNCTION camel_mime_filter_index_new_index ##### -->
<para>
</para>
-@info:
-@server_flags:
+@index:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4Namespace ##### -->
+<!-- ##### FUNCTION camel_mime_filter_save_new_with_stream ##### -->
+<para>
+
+</para>
+
+@stream:
+@Returns:
+
+<!-- ##### FUNCTION camel_mime_part_get_content_MD5 ##### -->
+<para>
+
+</para>
+
+@mime_part:
+@Returns:
+
+<!-- ##### FUNCTION camel_mime_part_set_content_MD5 ##### -->
+<para>
+
+</para>
+
+@mime_part:
+@md5sum:
+
+<!-- ##### FUNCTION camel_mkdir ##### -->
<para>
</para>
-@next:
@path:
-@sep:
+@mode:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4NamespaceList ##### -->
+<!-- ##### FUNCTION camel_name_to_type ##### -->
<para>
</para>
-@personal:
-@other:
-@shared:
+@name:
+@Returns:
-<!-- ##### USER_FUNCTION CamelIMAP4PlusCallback ##### -->
+<!-- ##### FUNCTION camel_news_address_new ##### -->
<para>
</para>
-@engine:
-@ic:
-@linebuf:
-@linelen:
-@ex:
@Returns:
-<!-- ##### USER_FUNCTION CamelIMAP4ReconnectFunc ##### -->
+<!-- ##### FUNCTION camel_nntp_auth_authenticate ##### -->
<para>
</para>
-@engine:
+@store:
@ex:
@Returns:
-<!-- ##### STRUCT CamelIMAP4RespCode ##### -->
+<!-- ##### FUNCTION camel_nntp_command ##### -->
<para>
</para>
-@code:
+@store:
+@ex:
+@folder:
+@line:
+@fmt:
+@Varargs:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4Search ##### -->
+<!-- ##### FUNCTION camel_nntp_folder_new ##### -->
<para>
</para>
@parent:
-@engine:
-@lastuid:
-@validity:
-@cache:
-@matches:
-@matches_hash:
-@matches_count:
+@folder_name:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4Store ##### -->
+<!-- ##### FUNCTION camel_nntp_folder_selected ##### -->
<para>
</para>
-@parent:
-@summary:
-@engine:
-@storage_path:
+@folder:
+@line:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4StoreInfo ##### -->
+<!-- ##### FUNCTION camel_nntp_get_headers ##### -->
<para>
</para>
-@info:
+@store:
+@nntp_folder:
+@ex:
-<!-- ##### STRUCT CamelIMAP4StoreSummary ##### -->
+<!-- ##### FUNCTION camel_nntp_grouplist_fetch ##### -->
<para>
</para>
-@summary:
-@priv:
-@version:
-@namespaces:
-@capa:
+@store:
+@ex:
+@Returns:
-<!-- ##### STRUCT CamelIMAP4Stream ##### -->
+<!-- ##### FUNCTION camel_nntp_grouplist_free ##### -->
<para>
</para>
-@parent:
-@stream:
-@disconnected:
-@have_unget:
-@mode:
-@eol:
-@literal:
-@realbuf:
-@inbuf:
-@inptr:
-@inend:
-@tokenbuf:
-@tokenptr:
-@tokenleft:
-@unget:
+@group_list:
-<!-- ##### STRUCT CamelIMAP4Summary ##### -->
+<!-- ##### FUNCTION camel_nntp_grouplist_save ##### -->
<para>
</para>
-@parent:
-@version:
-@exists:
-@recent:
-@unseen:
-@uidvalidity:
-@uidvalidity_changed:
-@update_flags:
+@group_list:
+@ex:
-<!-- ##### USER_FUNCTION CamelIMAP4UntaggedCallback ##### -->
+<!-- ##### FUNCTION camel_nntp_grouplist_update ##### -->
<para>
</para>
-@engine:
-@ic:
-@index:
-@token:
+@group_list:
@ex:
@Returns:
-<!-- ##### STRUCT CamelISubscribe ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_article_is_read ##### -->
<para>
</para>
-@iface:
-@subscribed:
-@subscribe:
-@unsubscribe:
+@newsrc:
+@group_name:
+@num:
+@Returns:
-<!-- ##### STRUCT CamelImapFolderPrivate ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_free_group_names ##### -->
<para>
</para>
-@cache_lock:
+@newsrc:
+@group_names:
-<!-- ##### STRUCT CamelImapWrapperPrivate ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_get_all_group_names ##### -->
<para>
</para>
+@newsrc:
+@Returns:
-<!-- ##### STRUCT CamelInterface ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_get_highest_article_read ##### -->
<para>
</para>
-@type:
+@newsrc:
+@group_name:
+@Returns:
-<!-- ##### STRUCT CamelIterator ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_get_num_articles_read ##### -->
<para>
</para>
-@klass:
+@newsrc:
+@group_name:
+@Returns:
-<!-- ##### STRUCT CamelIteratorVTable ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_get_subscribed_group_names ##### -->
<para>
</para>
-@free:
-@next:
-@reset:
-@length:
+@newsrc:
+@Returns:
-<!-- ##### STRUCT CamelLocalFolderPrivate ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_group_is_subscribed ##### -->
<para>
</para>
-@search_lock:
+@newsrc:
+@group_name:
+@Returns:
-<!-- ##### STRUCT CamelMD5Context ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_mark_article_read ##### -->
<para>
</para>
+@newsrc:
+@group_name:
+@num:
-<!-- ##### ARG CamelMedium:content ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_mark_range_read ##### -->
<para>
</para>
+@newsrc:
+@group_name:
+@low:
+@high:
-<!-- ##### STRUCT CamelMimeFilterChomp ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_read_for_server ##### -->
<para>
</para>
+@server:
+@Returns:
-<!-- ##### ARG CamelMimePart:content-id ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_subscribe_group ##### -->
<para>
</para>
+@newsrc:
+@group_name:
-<!-- ##### ARG CamelMimePart:content-md5 ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_unsubscribe_group ##### -->
<para>
</para>
+@newsrc:
+@group_name:
-<!-- ##### ARG CamelMimePart:description ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_write ##### -->
<para>
</para>
+@newsrc:
-<!-- ##### ARG CamelMimePart:disposition ##### -->
+<!-- ##### FUNCTION camel_nntp_newsrc_write_to_file ##### -->
<para>
</para>
+@newsrc:
+@fp:
-<!-- ##### STRUCT CamelNNTPFolderPrivate ##### -->
+<!-- ##### FUNCTION camel_nntp_raw_command ##### -->
<para>
</para>
-@search_lock:
-@cache_lock:
+@store:
+@ex:
+@line:
+@fmt:
+@Varargs:
+@Returns:
-<!-- ##### STRUCT CamelNNTPGroupList ##### -->
+<!-- ##### FUNCTION camel_nntp_raw_command_auth ##### -->
<para>
</para>
@store:
-@time:
-@group_list:
+@ex:
+@line:
+@fmt:
+@Varargs:
+@Returns:
-<!-- ##### STRUCT CamelNNTPGroupListEntry ##### -->
+<!-- ##### FUNCTION camel_nntp_raw_commandv ##### -->
<para>
</para>
-@group_name:
-@low:
-@high:
-@flags:
+@store:
+@ex:
+@line:
+@fmt:
+@ap:
+@Returns:
-<!-- ##### TYPEDEF CamelNNTPOverField ##### -->
+<!-- ##### MACRO camel_nntp_store_info_full_name ##### -->
<para>
</para>
+@s:
+@i:
-<!-- ##### STRUCT CamelNNTPStoreClass ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_add_from_full ##### -->
<para>
</para>
-@parent_class:
+@s:
+@full_name:
+@dir_sep:
+@Returns:
-<!-- ##### STRUCT CamelNNTPStorePrivate ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_dotted_to_full ##### -->
<para>
</para>
-@dummy:
+@s:
+@dotted:
+@dir_sep:
+@Returns:
-<!-- ##### STRUCT CamelNewsAddress ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_full_from_path ##### -->
<para>
</para>
-@parent:
-@priv:
+@s:
+@path:
+@Returns:
-<!-- ##### STRUCT CamelObjectMeta ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_full_name ##### -->
<para>
</para>
-@next:
-@value:
-@name:
+@s:
+@full_name:
+@Returns:
-<!-- ##### ARG CamelSasl:authenticated ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_full_to_path ##### -->
<para>
</para>
+@s:
+@full_name:
+@dir_sep:
+@Returns:
-<!-- ##### ARG CamelSasl:mechanism ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_new ##### -->
<para>
</para>
+@void:
+@Returns:
-<!-- ##### ARG CamelSasl:service ##### -->
+<!-- ##### FUNCTION camel_nntp_store_summary_path_to_full ##### -->
<para>
</para>
+@s:
+@path:
+@dir_sep:
+@Returns:
-<!-- ##### ARG CamelSasl:service-name ##### -->
+<!-- ##### FUNCTION camel_nntp_stream_getd ##### -->
<para>
</para>
+@is:
+@start:
+@len:
+@Returns:
-<!-- ##### STRUCT CamelSimpleDataWrapper ##### -->
+<!-- ##### FUNCTION camel_nntp_stream_gets ##### -->
<para>
</para>
+@is:
+@start:
+@len:
+@Returns:
-<!-- ##### STRUCT CamelStreamDataWrapper ##### -->
+<!-- ##### FUNCTION camel_nntp_stream_line ##### -->
<para>
</para>
+@is:
+@data:
+@len:
+@Returns:
-<!-- ##### MACRO IMAP4_READ_BUFLEN ##### -->
+<!-- ##### ENUM camel_nntp_stream_mode_t ##### -->
<para>
</para>
+@CAMEL_NNTP_STREAM_LINE:
+@CAMEL_NNTP_STREAM_DATA:
+@CAMEL_NNTP_STREAM_EOD:
-<!-- ##### MACRO IMAP4_READ_PRELEN ##### -->
+<!-- ##### FUNCTION camel_nntp_stream_new ##### -->
<para>
</para>
+@source:
+@Returns:
-<!-- ##### MACRO NI_MAXHOST ##### -->
+<!-- ##### FUNCTION camel_nntp_stream_set_mode ##### -->
<para>
</para>
+@is:
+@mode:
-<!-- ##### MACRO NI_MAXSERV ##### -->
+<!-- ##### FUNCTION camel_nntp_summary_check ##### -->
<para>
</para>
+@cns:
+@store:
+@line:
+@changes:
+@ex:
+@Returns:
-<!-- ##### FUNCTION add_recipients ##### -->
+<!-- ##### FUNCTION camel_nntp_summary_new ##### -->
<para>
</para>
-@recipient_list:
-@recipients:
-@recipient_type:
+@folder:
+@path:
@Returns:
-<!-- ##### STRUCT addrinfo ##### -->
+<!-- ##### FUNCTION camel_object_cast ##### -->
<para>
</para>
-@ai_flags:
-@ai_family:
-@ai_socktype:
-@ai_protocol:
-@ai_addrlen:
-@ai_addr:
-@ai_canonname:
-@ai_next:
+@obj:
+@ctype:
+@Returns:
-<!-- ##### FUNCTION camel_base64_decode_simple ##### -->
+<!-- ##### FUNCTION camel_object_class_add_interface ##### -->
<para>
</para>
-@data:
-@len:
-@Returns:
+@klass:
+@itype:
-<!-- ##### FUNCTION camel_base64_decode_step ##### -->
+<!-- ##### FUNCTION camel_object_class_cast ##### -->
<para>
</para>
-@in:
-@len:
-@out:
-@state:
-@save:
+@klass:
+@ctype:
@Returns:
-<!-- ##### FUNCTION camel_base64_encode_close ##### -->
+<!-- ##### FUNCTION camel_object_class_dump_tree ##### -->
<para>
</para>
-@in:
-@inlen:
-@break_lines:
-@out:
-@state:
-@save:
-@Returns:
+@root:
-<!-- ##### FUNCTION camel_base64_encode_simple ##### -->
+<!-- ##### FUNCTION camel_object_class_is ##### -->
<para>
</para>
-@data:
-@len:
+@klass:
+@ctype:
@Returns:
-<!-- ##### FUNCTION camel_base64_encode_step ##### -->
+<!-- ##### FUNCTION camel_object_get_int ##### -->
<para>
</para>
-@in:
-@inlen:
-@break_lines:
-@out:
-@state:
-@save:
+@vo:
+@ex:
+@tag:
@Returns:
-<!-- ##### FUNCTION camel_block_file_get_type ##### -->
+<!-- ##### FUNCTION camel_object_get_interface ##### -->
<para>
</para>
+@vo:
+@itype:
@Returns:
-<!-- ##### FUNCTION camel_data_cache_clear ##### -->
+<!-- ##### FUNCTION camel_object_get_ptr ##### -->
<para>
</para>
-@cache:
-@path:
+@vo:
@ex:
+@tag:
@Returns:
-<!-- ##### FUNCTION camel_data_cache_rename ##### -->
+<!-- ##### FUNCTION camel_object_is ##### -->
<para>
</para>
-@cache:
-@old:
-@new:
-@ex:
+@obj:
+@ctype:
@Returns:
-<!-- ##### FUNCTION camel_digest_folder_new ##### -->
+<!-- ##### FUNCTION camel_object_meta_get ##### -->
<para>
</para>
-@parent_store:
-@message:
+@vo:
+@name:
@Returns:
-<!-- ##### FUNCTION camel_digest_store_new ##### -->
+<!-- ##### FUNCTION camel_object_meta_set ##### -->
<para>
</para>
-@url:
+@vo:
+@name:
+@value:
@Returns:
-<!-- ##### FUNCTION camel_digest_summary_new ##### -->
+<!-- ##### FUNCTION camel_object_new ##### -->
<para>
</para>
+@type:
@Returns:
-<!-- ##### FUNCTION camel_file_util_decode_size_t ##### -->
+<!-- ##### FUNCTION camel_object_new_name ##### -->
<para>
</para>
-@in:
-@dest:
+@name:
@Returns:
-<!-- ##### FUNCTION camel_file_util_encode_size_t ##### -->
+<!-- ##### FUNCTION camel_object_ref ##### -->
<para>
</para>
-@out:
-@value:
+@Param1:
@Returns:
-<!-- ##### FUNCTION camel_filter_driver_expand_option ##### -->
+<!-- ##### VARIABLE camel_object_type ##### -->
<para>
</para>
-@d:
-@s:
-@action:
-@op:
-<!-- ##### FUNCTION camel_filter_driver_rule_count ##### -->
+<!-- ##### FUNCTION camel_object_unref ##### -->
<para>
</para>
-@d:
-@Returns:
+@Param1:
-<!-- ##### FUNCTION camel_filter_driver_rule_get ##### -->
+<!-- ##### FUNCTION camel_operation_cancel_block ##### -->
<para>
</para>
-@d:
-@n:
-@Returns:
+@cc:
-<!-- ##### FUNCTION camel_folder_summary_array_free ##### -->
+<!-- ##### FUNCTION camel_operation_cancel_unblock ##### -->
<para>
</para>
-@summary:
-@array:
+@cc:
-<!-- ##### FUNCTION camel_imap4_build_folder_info_tree ##### -->
+<!-- ##### FUNCTION camel_operation_progress_count ##### -->
<para>
</para>
-@array:
-@top:
-@Returns:
+@cc:
+@sofar:
-<!-- ##### FUNCTION camel_imap4_command_new ##### -->
+<!-- ##### FUNCTION camel_partition_table_get_type ##### -->
<para>
</para>
-@engine:
-@folder:
-@format:
-@Varargs:
@Returns:
-<!-- ##### FUNCTION camel_imap4_command_newv ##### -->
+<!-- ##### FUNCTION camel_pop3_command ##### -->
<para>
</para>
-@engine:
-@folder:
-@format:
-@args:
+@store:
+@ret:
+@ex:
+@fmt:
+@Varargs:
@Returns:
-<!-- ##### FUNCTION camel_imap4_command_ref ##### -->
+<!-- ##### FUNCTION camel_pop3_command_get_additional_data ##### -->
<para>
</para>
-@ic:
+@store:
+@total:
+@ex:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_command_register_untagged ##### -->
+<!-- ##### ENUM camel_pop3_command_t ##### -->
<para>
</para>
-@ic:
-@atom:
-@untagged:
+@CAMEL_POP3_COMMAND_IDLE:
+@CAMEL_POP3_COMMAND_DISPATCHED:
+@CAMEL_POP3_COMMAND_OK:
+@CAMEL_POP3_COMMAND_DATA:
+@CAMEL_POP3_COMMAND_ERR:
-<!-- ##### FUNCTION camel_imap4_command_reset ##### -->
+<!-- ##### FUNCTION camel_pop3_delete_old ##### -->
<para>
</para>
-@ic:
+@folder:
+@days_to_delete:
+@ex:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_command_step ##### -->
+<!-- ##### FUNCTION camel_pop3_engine_command_free ##### -->
<para>
</para>
-@ic:
-@Returns:
+@pe:
+@pc:
-<!-- ##### FUNCTION camel_imap4_command_unref ##### -->
+<!-- ##### FUNCTION camel_pop3_engine_command_new ##### -->
<para>
</para>
-@ic:
+@pe:
+@flags:
+@func:
+@data:
+@fmt:
+@Varargs:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_capability ##### -->
+<!-- ##### FUNCTION camel_pop3_engine_iterate ##### -->
<para>
</para>
-@engine:
-@ex:
+@pe:
+@pc:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_dequeue ##### -->
+<!-- ##### FUNCTION camel_pop3_engine_new ##### -->
<para>
</para>
-@engine:
-@ic:
+@source:
+@flags:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_disconnect ##### -->
+<!-- ##### FUNCTION camel_pop3_engine_reget_capabilities ##### -->
<para>
</para>
@engine:
-<!-- ##### FUNCTION camel_imap4_engine_eat_line ##### -->
+<!-- ##### ENUM camel_pop3_engine_t ##### -->
<para>
</para>
-@engine:
-@ex:
-@Returns:
+@CAMEL_POP3_ENGINE_DISCONNECT:
+@CAMEL_POP3_ENGINE_AUTH:
+@CAMEL_POP3_ENGINE_TRANSACTION:
+@CAMEL_POP3_ENGINE_UPDATE:
-<!-- ##### FUNCTION camel_imap4_engine_handle_untagged ##### -->
+<!-- ##### FUNCTION camel_pop3_folder_new ##### -->
<para>
</para>
-@engine:
+@parent:
@ex:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_handle_untagged_1 ##### -->
+<!-- ##### FUNCTION camel_pop3_store_expunge ##### -->
<para>
</para>
-@engine:
-@token:
+@store:
@ex:
-@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_iterate ##### -->
+<!-- ##### FUNCTION camel_pop3_stream_getd ##### -->
<para>
</para>
-@engine:
+@is:
+@start:
+@len:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_line ##### -->
+<!-- ##### FUNCTION camel_pop3_stream_gets ##### -->
<para>
</para>
-@engine:
-@line:
+@is:
+@start:
@len:
-@ex:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_literal ##### -->
+<!-- ##### FUNCTION camel_pop3_stream_line ##### -->
<para>
</para>
-@engine:
-@literal:
+@is:
+@data:
@len:
-@ex:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_namespace ##### -->
+<!-- ##### ENUM camel_pop3_stream_mode_t ##### -->
<para>
</para>
-@engine:
-@ex:
-@Returns:
+@CAMEL_POP3_STREAM_LINE:
+@CAMEL_POP3_STREAM_DATA:
+@CAMEL_POP3_STREAM_EOD:
-<!-- ##### FUNCTION camel_imap4_engine_new ##### -->
+<!-- ##### FUNCTION camel_pop3_stream_new ##### -->
<para>
</para>
-@service:
-@reconnect:
+@source:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_next_token ##### -->
+<!-- ##### FUNCTION camel_pop3_stream_set_mode ##### -->
<para>
</para>
-@engine:
-@token:
-@ex:
-@Returns:
+@is:
+@mode:
-<!-- ##### FUNCTION camel_imap4_engine_nstring ##### -->
+<!-- ##### FUNCTION camel_process_fork ##### -->
<para>
</para>
-@engine:
-@nstring:
+@path:
+@argv:
+@infd:
+@outfd:
+@errfd:
@ex:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_parse_resp_code ##### -->
+<!-- ##### FUNCTION camel_process_wait ##### -->
<para>
</para>
-@engine:
-@ex:
+@pid:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_prequeue ##### -->
+<!-- ##### FUNCTION camel_sasl_authenticated ##### -->
<para>
</para>
-@engine:
-@folder:
-@format:
-@Varargs:
+@sasl:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_queue ##### -->
+<!-- ##### FUNCTION camel_search_build_match_regex ##### -->
<para>
</para>
-@engine:
-@folder:
-@format:
-@Varargs:
+@pattern:
+@type:
+@argc:
+@argv:
+@ex:
@Returns:
-<!-- ##### FUNCTION camel_imap4_engine_select_folder ##### -->
+<!-- ##### FUNCTION camel_search_camel_header_soundex ##### -->
<para>
</para>
-@engine:
-@folder:
-@ex:
+@header:
+@match:
@Returns:
-<!-- ##### ENUM camel_imap4_engine_t ##### -->
+<!-- ##### ENUM camel_search_flags_t ##### -->
<para>
</para>
-@CAMEL_IMAP4_ENGINE_DISCONNECTED:
-@CAMEL_IMAP4_ENGINE_CONNECTED:
-@CAMEL_IMAP4_ENGINE_PREAUTH:
-@CAMEL_IMAP4_ENGINE_AUTHENTICATED:
-@CAMEL_IMAP4_ENGINE_SELECTED:
+@CAMEL_SEARCH_MATCH_START:
+@CAMEL_SEARCH_MATCH_END:
+@CAMEL_SEARCH_MATCH_REGEX:
+@CAMEL_SEARCH_MATCH_ICASE:
+@CAMEL_SEARCH_MATCH_NEWLINE:
-<!-- ##### FUNCTION camel_imap4_engine_take_stream ##### -->
+<!-- ##### FUNCTION camel_search_header_match ##### -->
<para>
</para>
-@engine:
-@stream:
-@ex:
+@value:
+@match:
+@how:
+@type:
+@default_charset:
@Returns:
-<!-- ##### FUNCTION camel_imap4_flags_diff ##### -->
+<!-- ##### ENUM camel_search_match_t ##### -->
<para>
</para>
-@diff:
-@old:
-@new:
+@CAMEL_SEARCH_MATCH_EXACT:
+@CAMEL_SEARCH_MATCH_CONTAINS:
+@CAMEL_SEARCH_MATCH_STARTS:
+@CAMEL_SEARCH_MATCH_ENDS:
+@CAMEL_SEARCH_MATCH_SOUNDEX:
-<!-- ##### FUNCTION camel_imap4_flags_merge ##### -->
+<!-- ##### FUNCTION camel_search_message_body_contains ##### -->
<para>
</para>
-@diff:
-@flags:
+@object:
+@pattern:
@Returns:
-<!-- ##### FUNCTION camel_imap4_folder_new ##### -->
+<!-- ##### ENUM camel_search_t ##### -->
<para>
</para>
-@store:
-@full_name:
-@ex:
-@Returns:
+@CAMEL_SEARCH_TYPE_ASIS:
+@CAMEL_SEARCH_TYPE_ENCODED:
+@CAMEL_SEARCH_TYPE_ADDRESS:
+@CAMEL_SEARCH_TYPE_ADDRESS_ENCODED:
+@CAMEL_SEARCH_TYPE_MLIST:
-<!-- ##### FUNCTION camel_imap4_folder_utf7_name ##### -->
+<!-- ##### STRUCT camel_search_word ##### -->
<para>
</para>
-@folder:
-@Returns:
+@type:
+@word:
-<!-- ##### FUNCTION camel_imap4_get_path_delim ##### -->
+<!-- ##### ENUM camel_search_word_t ##### -->
<para>
</para>
-@s:
-@full_name:
-@Returns:
+@CAMEL_SEARCH_WORD_SIMPLE:
+@CAMEL_SEARCH_WORD_COMPLEX:
+@CAMEL_SEARCH_WORD_8BIT:
-<!-- ##### FUNCTION camel_imap4_get_uid_set ##### -->
+<!-- ##### STRUCT camel_search_words ##### -->
<para>
</para>
-@engine:
-@summary:
-@infos:
-@cur:
-@linelen:
-@set:
-@Returns:
+@len:
+@type:
+@words:
-<!-- ##### FUNCTION camel_imap4_journal_append ##### -->
+<!-- ##### FUNCTION camel_spool_folder_new ##### -->
<para>
</para>
-@journal:
-@message:
-@mi:
-@appended_uid:
+@parent_store:
+@full_name:
+@flags:
@ex:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_journal_new ##### -->
+<!-- ##### ENUM camel_spool_store_t ##### -->
<para>
</para>
-@folder:
-@filename:
-@Returns:
+@CAMEL_SPOOL_STORE_MBOX:
+@CAMEL_SPOOL_STORE_ELM:
-<!-- ##### FUNCTION camel_imap4_journal_readd_failed ##### -->
+<!-- ##### FUNCTION camel_spool_summary_add ##### -->
<para>
</para>
-@journal:
+@cls:
+@msg:
+@info:
+@Param4:
+@ex:
+@Returns:
-<!-- ##### ENUM camel_imap4_level_t ##### -->
+<!-- ##### FUNCTION camel_spool_summary_check ##### -->
<para>
</para>
-@CAMEL_IMAP4_LEVEL_UNKNOWN:
-@CAMEL_IMAP4_LEVEL_IMAP4:
-@CAMEL_IMAP4_LEVEL_IMAP4REV1:
+@cls:
+@Param2:
+@ex:
+@Returns:
-<!-- ##### STRUCT camel_imap4_list_t ##### -->
+<!-- ##### FUNCTION camel_spool_summary_construct ##### -->
<para>
</para>
-@flags:
-@delim:
-@name:
+@new:
+@filename:
+@spool_name:
+@index:
-<!-- ##### FUNCTION camel_imap4_merge_flags ##### -->
+<!-- ##### FUNCTION camel_spool_summary_decode_x_evolution ##### -->
<para>
</para>
-@original:
-@local:
-@server:
+@cls:
+@xev:
+@info:
@Returns:
-<!-- ##### FUNCTION camel_imap4_namespace_clear ##### -->
+<!-- ##### FUNCTION camel_spool_summary_encode_x_evolution ##### -->
<para>
</para>
-@ns:
+@cls:
+@info:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_namespace_list_copy ##### -->
+<!-- ##### FUNCTION camel_spool_summary_load ##### -->
<para>
</para>
-@nsl:
+@cls:
+@forceindex:
+@ex:
@Returns:
-<!-- ##### FUNCTION camel_imap4_namespace_list_free ##### -->
+<!-- ##### FUNCTION camel_spool_summary_new ##### -->
<para>
</para>
-@nsl:
+@Param1:
+@filename:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_parse_flags_list ##### -->
+<!-- ##### FUNCTION camel_spool_summary_sync ##### -->
<para>
</para>
-@engine:
-@flags:
+@cls:
+@expunge:
+@Param3:
@ex:
@Returns:
-<!-- ##### FUNCTION camel_imap4_resp_code_free ##### -->
+<!-- ##### FUNCTION camel_spool_summary_write_headers ##### -->
<para>
</para>
-@rcode:
+@fd:
+@header:
+@xevline:
+@Returns:
-<!-- ##### ENUM camel_imap4_resp_code_t ##### -->
+<!-- ##### FUNCTION camel_stream_filter_new_with_stream ##### -->
<para>
</para>
-@CAMEL_IMAP4_RESP_CODE_ALERT:
-@CAMEL_IMAP4_RESP_CODE_BADCHARSET:
-@CAMEL_IMAP4_RESP_CODE_CAPABILITY:
-@CAMEL_IMAP4_RESP_CODE_PARSE:
-@CAMEL_IMAP4_RESP_CODE_PERM_FLAGS:
-@CAMEL_IMAP4_RESP_CODE_READONLY:
-@CAMEL_IMAP4_RESP_CODE_READWRITE:
-@CAMEL_IMAP4_RESP_CODE_TRYCREATE:
-@CAMEL_IMAP4_RESP_CODE_UIDNEXT:
-@CAMEL_IMAP4_RESP_CODE_UIDVALIDITY:
-@CAMEL_IMAP4_RESP_CODE_UNSEEN:
-@CAMEL_IMAP4_RESP_CODE_NEWNAME:
-@CAMEL_IMAP4_RESP_CODE_APPENDUID:
-@CAMEL_IMAP4_RESP_CODE_COPYUID:
-@CAMEL_IMAP4_RESP_CODE_UNKNOWN:
+@stream:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_search_new ##### -->
+<!-- ##### FUNCTION camel_stream_vfs_new_with_handle ##### -->
<para>
</para>
-@engine:
-@cachedir:
+@handle:
@Returns:
-<!-- ##### FUNCTION camel_imap4_specials_init ##### -->
+<!-- ##### FUNCTION camel_test_end ##### -->
<para>
</para>
+@void:
-<!-- ##### STRUCT camel_imap4_status_attr_t ##### -->
+<!-- ##### FUNCTION camel_test_fail ##### -->
<para>
</para>
-@next:
-@type:
-@value:
+@why:
+@Varargs:
-<!-- ##### FUNCTION camel_imap4_status_free ##### -->
+<!-- ##### FUNCTION camel_test_failv ##### -->
<para>
</para>
-@status:
+@why:
+@ap:
-<!-- ##### STRUCT camel_imap4_status_t ##### -->
+<!-- ##### FUNCTION camel_test_fatal ##### -->
<para>
</para>
-@attr_list:
-@mailbox:
+@void:
-<!-- ##### FUNCTION camel_imap4_store_summary_get_folder_info ##### -->
+<!-- ##### FUNCTION camel_test_init ##### -->
<para>
</para>
-@s:
-@top:
-@flags:
-@Returns:
+@argc:
+@argv:
-<!-- ##### FUNCTION camel_imap4_store_summary_new ##### -->
+<!-- ##### FUNCTION camel_test_nonfatal ##### -->
<para>
</para>
-@Returns:
+@why:
+@Varargs:
-<!-- ##### FUNCTION camel_imap4_store_summary_note_info ##### -->
+<!-- ##### FUNCTION camel_test_provider_init ##### -->
<para>
</para>
-@s:
-@fi:
+@argc:
+@argv:
-<!-- ##### FUNCTION camel_imap4_store_summary_set_capabilities ##### -->
+<!-- ##### FUNCTION camel_test_pull ##### -->
<para>
</para>
-@s:
-@capa:
+@void:
-<!-- ##### FUNCTION camel_imap4_store_summary_set_namespaces ##### -->
+<!-- ##### FUNCTION camel_test_push ##### -->
<para>
</para>
-@s:
-@ns:
+@what:
+@Varargs:
-<!-- ##### FUNCTION camel_imap4_store_summary_unnote_info ##### -->
+<!-- ##### FUNCTION camel_test_session_new ##### -->
<para>
</para>
-@s:
-@fi:
+@path:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_stream_line ##### -->
+<!-- ##### FUNCTION camel_test_start ##### -->
<para>
</para>
-@stream:
-@line:
-@len:
-@Returns:
+@what:
-<!-- ##### FUNCTION camel_imap4_stream_literal ##### -->
+<!-- ##### FUNCTION camel_text_index_get_type ##### -->
<para>
</para>
-@stream:
-@literal:
-@len:
@Returns:
-<!-- ##### FUNCTION camel_imap4_stream_new ##### -->
+<!-- ##### FUNCTION camel_text_index_key_cursor_get_type ##### -->
<para>
</para>
-@stream:
@Returns:
-<!-- ##### FUNCTION camel_imap4_stream_next_token ##### -->
+<!-- ##### FUNCTION camel_text_index_name_get_type ##### -->
<para>
</para>
-@stream:
-@token:
@Returns:
-<!-- ##### FUNCTION camel_imap4_stream_unget_token ##### -->
+<!-- ##### MACRO camel_type_get_global_classfuncs ##### -->
<para>
</para>
-@stream:
-@token:
-@Returns:
+@x:
-<!-- ##### FUNCTION camel_imap4_summary_expunge ##### -->
+<!-- ##### FUNCTION camel_type_init ##### -->
<para>
</para>
-@summary:
-@seqid:
+@void:
-<!-- ##### FUNCTION camel_imap4_summary_flush_updates ##### -->
+<!-- ##### FUNCTION camel_type_register ##### -->
<para>
</para>
-@summary:
-@ex:
+@parent:
+@name:
+@instance_size:
+@classfuncs_size:
+@class_init:
+@class_finalize:
+@instance_init:
+@instance_finalize:
@Returns:
-<!-- ##### FUNCTION camel_imap4_summary_new ##### -->
+<!-- ##### FUNCTION camel_type_to_name ##### -->
<para>
</para>
-@folder:
+@type:
@Returns:
-<!-- ##### FUNCTION camel_imap4_summary_set_exists ##### -->
+<!-- ##### FUNCTION camel_ustrstrcase ##### -->
<para>
</para>
-@summary:
-@exists:
+@haystack:
+@needle:
+@Returns:
-<!-- ##### FUNCTION camel_imap4_summary_set_recent ##### -->
+<!-- ##### VARIABLE camel_verbose_debug ##### -->
<para>
</para>
-@summary:
-@recent:
-<!-- ##### FUNCTION camel_imap4_summary_set_uidnext ##### -->
+<!-- ##### MACRO check ##### -->
<para>
</para>
-@summary:
-@uidnext:
+@x:
-<!-- ##### FUNCTION camel_imap4_summary_set_uidvalidity ##### -->
+<!-- ##### MACRO check_count ##### -->
<para>
</para>
-@summary:
-@uidvalidity:
+@object:
+@expected:
-<!-- ##### FUNCTION camel_imap4_summary_set_unseen ##### -->
+<!-- ##### MACRO check_msg ##### -->
<para>
</para>
-@summary:
-@unseen:
+@x:
+@y:
+@z...:
-<!-- ##### STRUCT camel_imap4_token_t ##### -->
+<!-- ##### MACRO check_unref ##### -->
<para>
</para>
-@token:
+@object:
+@expected:
-<!-- ##### FUNCTION camel_imap4_untagged_list ##### -->
+<!-- ##### FUNCTION cnc_lookup ##### -->
<para>
</para>
-@engine:
-@ic:
-@index:
-@token:
-@ex:
+@priv:
@Returns:
-<!-- ##### FUNCTION camel_imap4_untagged_status ##### -->
+<!-- ##### FUNCTION create_junk_folder ##### -->
<para>
</para>
-@engine:
-@ic:
-@index:
-@token:
-@ex:
+@store:
@Returns:
-<!-- ##### FUNCTION camel_imap4_utils_set_unexpected_token_error ##### -->
+<!-- ##### FUNCTION do_flags_diff ##### -->
<para>
</para>
-@ex:
-@engine:
-@token:
+@diff:
+@old:
+@_new:
-<!-- ##### FUNCTION camel_imap_store_summary_namespace_new ##### -->
+<!-- ##### FUNCTION e_path_find_folders ##### -->
<para>
</para>
-@s:
-@full_name:
-@dir_sep:
+@prefix:
+@callback:
+@data:
@Returns:
-<!-- ##### FUNCTION camel_imap_store_summary_namespace_set ##### -->
+<!-- ##### FUNCTION e_path_rmdir ##### -->
<para>
</para>
-@s:
-@ns:
+@prefix:
+@vpath:
+@Returns:
-<!-- ##### FUNCTION camel_index_name_get_type ##### -->
+<!-- ##### FUNCTION e_path_to_physical ##### -->
<para>
</para>
+@prefix:
+@vpath:
@Returns:
-<!-- ##### FUNCTION camel_index_set_normalise ##### -->
+<!-- ##### STRUCT flags_diff_t ##### -->
<para>
</para>
-@idx:
-@func:
-@data:
+@changed:
+@bits:
-<!-- ##### FUNCTION camel_interface_cast ##### -->
+<!-- ##### FUNCTION groupwise_base_url_lookup ##### -->
<para>
</para>
-@klass:
-@ctype:
+@priv:
@Returns:
-<!-- ##### FUNCTION camel_interface_is ##### -->
+<!-- ##### FUNCTION groupwise_get_name ##### -->
<para>
</para>
-@k:
-@ctype:
+@service:
+@brief:
@Returns:
-<!-- ##### FUNCTION camel_interface_register ##### -->
+<!-- ##### FUNCTION groupwise_refresh_folder ##### -->
<para>
</para>
-@parent:
-@name:
-@classfuncs_size:
-@class_init:
-@class_finalize:
-@Returns:
+@folder:
+@ex:
-<!-- ##### VARIABLE camel_interface_type ##### -->
+<!-- ##### FUNCTION groupwise_store_set_current_folder ##### -->
<para>
</para>
+@groupwise_store:
+@folder:
-<!-- ##### FUNCTION camel_isubscribe_get_type ##### -->
+<!-- ##### FUNCTION groupwise_summary_clear ##### -->
<para>
</para>
+@summary:
+@uncache:
+
+<!-- ##### FUNCTION gw_concat ##### -->
+<para>
+
+</para>
+
+@prefix:
+@suffix:
@Returns:
-<!-- ##### FUNCTION camel_isubscribe_subscribe ##### -->
+<!-- ##### FUNCTION gw_get_path ##### -->
<para>
</para>
-@store:
+@gw_store:
@folder_name:
-@ex:
+@Returns:
-<!-- ##### FUNCTION camel_isubscribe_subscribed ##### -->
+<!-- ##### FUNCTION gw_store_reload_folder ##### -->
<para>
</para>
@store:
-@name:
-@Returns:
+@folder:
+@flags:
+@ex:
-<!-- ##### FUNCTION camel_isubscribe_unsubscribe ##### -->
+<!-- ##### FUNCTION gw_update_summary ##### -->
<para>
</para>
-@store:
-@folder_name:
+@folder:
+@item_list:
@ex:
-<!-- ##### FUNCTION camel_iterator_free ##### -->
+<!-- ##### FUNCTION imap_append_resyncing ##### -->
<para>
</para>
-@it:
+@folder:
+@message:
+@info:
+@appended_uid:
+@ex:
+@Returns:
-<!-- ##### FUNCTION camel_iterator_length ##### -->
+<!-- ##### FUNCTION imap_concat ##### -->
<para>
</para>
-@it:
+@imap_store:
+@prefix:
+@suffix:
@Returns:
-<!-- ##### FUNCTION camel_iterator_new ##### -->
+<!-- ##### FUNCTION imap_create_flag_list ##### -->
<para>
</para>
-@klass:
-@size:
+@flags:
+@info:
+@permanent_flags:
@Returns:
-<!-- ##### FUNCTION camel_iterator_next ##### -->
+<!-- ##### FUNCTION imap_expunge_uids_resyncing ##### -->
<para>
</para>
-@it:
+@folder:
+@uids:
@ex:
@Returns:
-<!-- ##### FUNCTION camel_iterator_reset ##### -->
+<!-- ##### FUNCTION imap_is_atom ##### -->
<para>
</para>
-@it:
+@in:
+@Returns:
-<!-- ##### FUNCTION camel_key_file_get_type ##### -->
+<!-- ##### FUNCTION imap_mailbox_decode ##### -->
<para>
</para>
+@in:
+@inlen:
@Returns:
-<!-- ##### FUNCTION camel_key_table_get_type ##### -->
+<!-- ##### FUNCTION imap_mailbox_encode ##### -->
<para>
</para>
+@in:
+@inlen:
@Returns:
-<!-- ##### FUNCTION camel_md5_final ##### -->
+<!-- ##### FUNCTION imap_namespace_concat ##### -->
<para>
</para>
-@ctx:
-@digest:
+@store:
+@name:
+@Returns:
-<!-- ##### FUNCTION camel_md5_get_digest ##### -->
+<!-- ##### FUNCTION imap_namespaces_destroy ##### -->
<para>
</para>
-@buffer:
-@buffer_size:
-@digest:
+@namespaces:
-<!-- ##### FUNCTION camel_md5_get_digest_from_file ##### -->
+<!-- ##### FUNCTION imap_next_word ##### -->
<para>
</para>
-@filename:
-@digest:
+@buf:
+@Returns:
-<!-- ##### FUNCTION camel_md5_init ##### -->
+<!-- ##### MACRO imap_parse_astring ##### -->
<para>
</para>
-@ctx:
+@str_p:
+@len_p:
-<!-- ##### FUNCTION camel_md5_update ##### -->
+<!-- ##### FUNCTION imap_parse_body ##### -->
<para>
</para>
-@ctx:
-@buf:
-@len:
+@body_p:
+@folder:
+@ci:
-<!-- ##### FUNCTION camel_medium_get_content_object ##### -->
+<!-- ##### FUNCTION imap_parse_flag_list ##### -->
<para>
</para>
-@medium:
+@flag_list_p:
+@flags_out:
+@custom_flags_out:
@Returns:
-<!-- ##### FUNCTION camel_medium_set_content_object ##### -->
+<!-- ##### FUNCTION imap_parse_folder_name ##### -->
<para>
</para>
-@medium:
-@content:
+@store:
+@folder_name:
+@Returns:
-<!-- ##### FUNCTION camel_mime_filter_basic_new_type ##### -->
+<!-- ##### FUNCTION imap_parse_list_response ##### -->
<para>
</para>
-@type:
+@store:
+@buf:
+@flags:
+@sep:
+@folder:
@Returns:
-<!-- ##### FUNCTION camel_mime_filter_charset_new_convert ##### -->
+<!-- ##### FUNCTION imap_parse_namespace_response ##### -->
<para>
</para>
-@from_charset:
-@to_charset:
+@response:
@Returns:
-<!-- ##### FUNCTION camel_mime_filter_index_new_index ##### -->
+<!-- ##### MACRO imap_parse_nstring ##### -->
<para>
</para>
-@index:
-@Returns:
+@str_p:
+@len_p:
-<!-- ##### FUNCTION camel_mime_filter_save_new_with_stream ##### -->
+<!-- ##### MACRO imap_parse_string ##### -->
<para>
</para>
-@stream:
-@Returns:
+@str_p:
+@len_p:
-<!-- ##### FUNCTION camel_mime_part_get_content_MD5 ##### -->
+<!-- ##### FUNCTION imap_parse_string_generic ##### -->
<para>
</para>
-@mime_part:
+@str_p:
+@len:
+@type:
@Returns:
-<!-- ##### FUNCTION camel_mime_part_set_content_MD5 ##### -->
+<!-- ##### FUNCTION imap_path_find_folders ##### -->
<para>
</para>
-@mime_part:
-@md5sum:
+@prefix:
+@callback:
+@data:
+@Returns:
-<!-- ##### FUNCTION camel_mkdir ##### -->
+<!-- ##### FUNCTION imap_path_to_physical ##### -->
<para>
</para>
-@path:
-@mode:
+@prefix:
+@vpath:
@Returns:
-<!-- ##### FUNCTION camel_news_address_new ##### -->
+<!-- ##### FUNCTION imap_quote_string ##### -->
<para>
</para>
+@str:
@Returns:
-<!-- ##### FUNCTION camel_object_class_add_interface ##### -->
+<!-- ##### FUNCTION imap_skip_list ##### -->
<para>
</para>
-@klass:
-@itype:
+@str_p:
-<!-- ##### FUNCTION camel_object_get_int ##### -->
+<!-- ##### FUNCTION imap_transfer_resyncing ##### -->
<para>
</para>
-@vo:
+@source:
+@uids:
+@dest:
+@transferred_uids:
+@delete_originals:
@ex:
-@tag:
@Returns:
-<!-- ##### FUNCTION camel_object_get_interface ##### -->
+<!-- ##### FUNCTION imap_uid_array_free ##### -->
<para>
</para>
-@vo:
-@itype:
-@Returns:
+@arr:
-<!-- ##### FUNCTION camel_object_get_ptr ##### -->
+<!-- ##### FUNCTION imap_uid_array_to_set ##### -->
<para>
</para>
-@vo:
-@ex:
-@tag:
+@summary:
+@uids:
+@uid:
+@maxlen:
+@lastuid:
@Returns:
-<!-- ##### FUNCTION camel_object_meta_get ##### -->
+<!-- ##### FUNCTION imap_uid_set_to_array ##### -->
<para>
</para>
-@vo:
-@name:
+@summary:
+@uids:
@Returns:
-<!-- ##### FUNCTION camel_object_meta_set ##### -->
+<!-- ##### MACRO is_atom ##### -->
<para>
</para>
-@vo:
-@name:
-@value:
-@Returns:
+@x:
-<!-- ##### FUNCTION camel_object_new_name ##### -->
+<!-- ##### MACRO is_ctrl ##### -->
<para>
</para>
-@name:
-@Returns:
+@x:
-<!-- ##### FUNCTION camel_operation_cancel_block ##### -->
+<!-- ##### MACRO is_lwsp ##### -->
<para>
</para>
-@cc:
+@x:
-<!-- ##### FUNCTION camel_operation_cancel_unblock ##### -->
+<!-- ##### MACRO is_qsafe ##### -->
<para>
</para>
-@cc:
+@x:
-<!-- ##### FUNCTION camel_operation_progress_count ##### -->
+<!-- ##### MACRO is_type ##### -->
<para>
</para>
-@cc:
-@sofar:
+@x:
+@t:
-<!-- ##### FUNCTION camel_partition_table_get_type ##### -->
+<!-- ##### MACRO is_wild ##### -->
<para>
</para>
-@Returns:
+@x:
-<!-- ##### FUNCTION camel_process_fork ##### -->
+<!-- ##### STRUCT namespace ##### -->
<para>
</para>
-@path:
-@argv:
-@infd:
-@outfd:
-@errfd:
-@ex:
-@Returns:
+@next:
+@prefix:
+@delim:
-<!-- ##### FUNCTION camel_process_wait ##### -->
+<!-- ##### STRUCT namespaces ##### -->
<para>
</para>
-@pid:
-@Returns:
+@personal:
+@other:
+@shared:
-<!-- ##### FUNCTION camel_sasl_authenticated ##### -->
+<!-- ##### MACRO pull ##### -->
<para>
</para>
-@sasl:
-@Returns:
-<!-- ##### FUNCTION camel_search_build_match_regex ##### -->
+<!-- ##### MACRO push ##### -->
<para>
</para>
-@pattern:
-@type:
-@argc:
-@argv:
-@ex:
+
+<!-- ##### FUNCTION storage_path_lookup ##### -->
+<para>
+
+</para>
+
+@priv:
@Returns:
-<!-- ##### FUNCTION camel_search_camel_header_soundex ##### -->
+<!-- ##### FUNCTION string_equal ##### -->
<para>
</para>
-@header:
-@match:
+@a:
+@b:
@Returns:
-<!-- ##### ENUM camel_search_flags_t ##### -->
+<!-- ##### FUNCTION strip_lt_gt ##### -->
<para>
</para>
-@CAMEL_SEARCH_MATCH_START:
-@CAMEL_SEARCH_MATCH_END:
-@CAMEL_SEARCH_MATCH_REGEX:
-@CAMEL_SEARCH_MATCH_ICASE:
-@CAMEL_SEARCH_MATCH_NEWLINE:
+@string:
+@s_offset:
+@e_offset:
-<!-- ##### FUNCTION camel_search_header_match ##### -->
+<!-- ##### FUNCTION test_address_compare ##### -->
<para>
</para>
-@value:
-@match:
-@how:
-@type:
-@default_charset:
-@Returns:
+@addr:
+@addr2:
-<!-- ##### ENUM camel_search_match_t ##### -->
+<!-- ##### FUNCTION test_folder_basic ##### -->
<para>
</para>
-@CAMEL_SEARCH_MATCH_EXACT:
-@CAMEL_SEARCH_MATCH_CONTAINS:
-@CAMEL_SEARCH_MATCH_STARTS:
-@CAMEL_SEARCH_MATCH_ENDS:
-@CAMEL_SEARCH_MATCH_SOUNDEX:
+@session:
+@storename:
+@local:
+@spool:
-<!-- ##### FUNCTION camel_search_message_body_contains ##### -->
+<!-- ##### FUNCTION test_folder_counts ##### -->
<para>
</para>
-@object:
-@pattern:
-@Returns:
+@folder:
+@total:
+@unread:
-<!-- ##### ENUM camel_search_t ##### -->
+<!-- ##### FUNCTION test_folder_message ##### -->
<para>
</para>
-@CAMEL_SEARCH_TYPE_ASIS:
-@CAMEL_SEARCH_TYPE_ENCODED:
-@CAMEL_SEARCH_TYPE_ADDRESS:
-@CAMEL_SEARCH_TYPE_ADDRESS_ENCODED:
-@CAMEL_SEARCH_TYPE_MLIST:
+@folder:
+@uid:
-<!-- ##### STRUCT camel_search_word ##### -->
+<!-- ##### FUNCTION test_folder_message_ops ##### -->
<para>
</para>
-@type:
-@word:
+@session:
+@storename:
+@local:
+@foldername:
-<!-- ##### ENUM camel_search_word_t ##### -->
+<!-- ##### FUNCTION test_folder_not_message ##### -->
<para>
</para>
-@CAMEL_SEARCH_WORD_SIMPLE:
-@CAMEL_SEARCH_WORD_COMPLEX:
-@CAMEL_SEARCH_WORD_8BIT:
+@folder:
+@uid:
-<!-- ##### STRUCT camel_search_words ##### -->
+<!-- ##### MACRO test_free ##### -->
<para>
</para>
-@len:
-@type:
-@words:
+@mem:
-<!-- ##### FUNCTION camel_stream_filter_new_with_stream ##### -->
+<!-- ##### FUNCTION test_message_compare ##### -->
<para>
</para>
-@stream:
+@msg:
@Returns:
-<!-- ##### FUNCTION camel_stream_vfs_new_with_handle ##### -->
+<!-- ##### FUNCTION test_message_compare_content ##### -->
<para>
</para>
-@handle:
+@dw:
+@text:
+@len:
@Returns:
-<!-- ##### FUNCTION camel_text_index_get_type ##### -->
+<!-- ##### FUNCTION test_message_compare_header ##### -->
<para>
</para>
+@m1:
+@m2:
@Returns:
-<!-- ##### FUNCTION camel_text_index_key_cursor_get_type ##### -->
+<!-- ##### FUNCTION test_message_compare_messages ##### -->
<para>
</para>
+@m1:
+@m2:
@Returns:
-<!-- ##### FUNCTION camel_text_index_name_get_type ##### -->
+<!-- ##### FUNCTION test_message_create_simple ##### -->
<para>
</para>
+@void:
@Returns:
-<!-- ##### FUNCTION camel_ustrstrcase ##### -->
+<!-- ##### FUNCTION test_message_dump_structure ##### -->
<para>
</para>
-@haystack:
-@needle:
-@Returns:
+@m:
-<!-- ##### VARIABLE camel_verbose_debug ##### -->
+<!-- ##### FUNCTION test_message_info ##### -->
<para>
</para>
+@msg:
+@info:
-<!-- ##### FUNCTION groupwise_refresh_folder ##### -->
+<!-- ##### FUNCTION test_message_read_file ##### -->
<para>
</para>
-@folder:
-@ex:
+@name:
+@Returns:
-<!-- ##### FUNCTION gw_get_path ##### -->
+<!-- ##### FUNCTION test_message_set_content_simple ##### -->
<para>
</para>
-@gw_store:
-@folder_name:
+@part:
+@how:
+@type:
+@text:
+@len:
+
+<!-- ##### FUNCTION test_message_write_file ##### -->
+<para>
+
+</para>
+
+@msg:
+@name:
@Returns:
-<!-- ##### MACRO is_atom ##### -->
+<!-- ##### FUNCTION test_seekable_substream_readpart ##### -->
<para>
</para>
-@x:
+@s:
-<!-- ##### MACRO is_ctrl ##### -->
+<!-- ##### FUNCTION test_seekable_substream_writepart ##### -->
<para>
</para>
-@x:
+@s:
+@type:
-<!-- ##### MACRO is_lwsp ##### -->
+<!-- ##### FUNCTION test_stream_seekable_readpart ##### -->
<para>
</para>
-@x:
+@s:
-<!-- ##### MACRO is_qsafe ##### -->
+<!-- ##### FUNCTION test_stream_seekable_writepart ##### -->
<para>
</para>
-@x:
+@s:
-<!-- ##### MACRO is_type ##### -->
+<!-- ##### STRUCT xover_header ##### -->
<para>
</para>
-@x:
-@t:
+@next:
+@name:
+@skip:
+@type:
-<!-- ##### MACRO is_wild ##### -->
+<!-- ##### ENUM xover_t ##### -->
<para>
</para>
-@x:
+@XOVER_STRING:
+@XOVER_MSGID:
+@XOVER_SIZE:
</para>
-@parent:
-@priv:
-@expression:
-@flags:
-@changes:
-@search:
-@parent_vee_store:
-@hashes:
-@loaded:
-@deleted:
<!-- ##### MACRO CAMEL_UNMATCHED_NAME ##### -->
<para>
</para>
-@parent:
-@folder_unmatched:
-@unmatched_uids:
<!-- ##### MACRO CAMEL_STORE_VEE_FOLDER_AUTO ##### -->
<para>
</para>
-@summary:
-@force_counts:
-@fake_visible_count:
<!-- ##### STRUCT CamelVeeMessageInfo ##### -->
<para>
</para>
-@parent:
-@type:
-@bit:
<!-- ##### ENUM camel_vtrash_folder_t ##### -->
<para>