CamelFolderSummary

CamelFolderSummary

Synopsis

struct              CamelFolderSummary;
                    CamelMessageInfo;
                    CamelMessageInfoBase;
                    CamelFolderMetaSummary;
struct              CamelMessageContentInfo;
enum                CamelMessageFlags;
#define             CAMEL_MESSAGE_SYSTEM_MASK
                    CamelFlag;
                    CamelTag;
                    CamelSummaryMessageID;
                    CamelSummaryReferences;
enum                CamelFolderSummaryFlags;
CamelFolderSummary* camel_folder_summary_new            (struct _CamelFolder *folder);
void                camel_folder_summary_set_filename   (CamelFolderSummary *summary,
                                                         const char *filename);
void                camel_folder_summary_set_index      (CamelFolderSummary *summary,
                                                         CamelIndex *index);
void                camel_folder_summary_set_build_content
                                                        (CamelFolderSummary *summary,
                                                         gboolean state);
guint32             camel_folder_summary_next_uid       (CamelFolderSummary *summary);
char*               camel_folder_summary_next_uid_string
                                                        (CamelFolderSummary *summary);
void                camel_folder_summary_set_uid        (CamelFolderSummary *summary,
                                                         guint32 uid);
int                 camel_folder_summary_load           (CamelFolderSummary *summary);
int                 camel_folder_summary_save           (CamelFolderSummary *summary);
int                 camel_folder_summary_header_load    (CamelFolderSummary *summary);
void                camel_folder_summary_touch          (CamelFolderSummary *summary);
void                camel_folder_summary_add            (CamelFolderSummary *summary,
                                                         CamelMessageInfo *info);
CamelMessageInfo*   camel_folder_summary_add_from_header
                                                        (CamelFolderSummary *summary,
                                                         struct _camel_header_raw *headers);
CamelMessageInfo*   camel_folder_summary_add_from_parser
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeParser *parser);
CamelMessageInfo*   camel_folder_summary_add_from_message
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeMessage *message);
CamelMessageInfo*   camel_folder_summary_info_new_from_header
                                                        (CamelFolderSummary *summary,
                                                         struct _camel_header_raw *headers);
CamelMessageInfo*   camel_folder_summary_info_new_from_parser
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeParser *parser);
CamelMessageInfo*   camel_folder_summary_info_new_from_message
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeMessage *message);
CamelMessageContentInfo* camel_folder_summary_content_info_new
                                                        (CamelFolderSummary *summary);
void                camel_folder_summary_content_info_free
                                                        (CamelFolderSummary *summary,
                                                         CamelMessageContentInfo *ci);
void                camel_folder_summary_remove         (CamelFolderSummary *summary,
                                                         CamelMessageInfo *info);
void                camel_folder_summary_remove_uid     (CamelFolderSummary *summary,
                                                         const char *uid);
void                camel_folder_summary_remove_index   (CamelFolderSummary *summary,
                                                         int index);
void                camel_folder_summary_remove_range   (CamelFolderSummary *summary,
                                                         int start,
                                                         int end);
void                camel_folder_summary_clear          (CamelFolderSummary *summary);
int                 camel_folder_summary_count          (CamelFolderSummary *summary);
CamelMessageInfo*   camel_folder_summary_index          (CamelFolderSummary *summary,
                                                         int index);
CamelMessageInfo*   camel_folder_summary_uid            (CamelFolderSummary *summary,
                                                         const char *uid);
GPtrArray*          camel_folder_summary_array          (CamelFolderSummary *summary);
void                camel_folder_summary_array_free     (CamelFolderSummary *summary,
                                                         GPtrArray *array);
int                 camel_folder_summary_encode_token   (FILE *out,
                                                         const char *str);
int                 camel_folder_summary_decode_token   (FILE *in,
                                                         char **str);
gboolean            camel_flag_get                      (CamelFlag **list,
                                                         const char *name);
gboolean            camel_flag_set                      (CamelFlag **list,
                                                         const char *name,
                                                         gboolean state);
gboolean            camel_flag_list_copy                (CamelFlag **to,
                                                         CamelFlag **from);
int                 camel_flag_list_size                (CamelFlag **list);
void                camel_flag_list_free                (CamelFlag **list);
guint32             camel_system_flag                   (const char *name);
gboolean            camel_system_flag_get               (guint32 flags,
                                                         const char *name);
const char*         camel_tag_get                       (CamelTag **list,
                                                         const char *name);
gboolean            camel_tag_set                       (CamelTag **list,
                                                         const char *name,
                                                         const char *value);
gboolean            camel_tag_list_copy                 (CamelTag **to,
                                                         CamelTag **from);
int                 camel_tag_list_size                 (CamelTag **list);
void                camel_tag_list_free                 (CamelTag **list);
void*               camel_message_info_new              (CamelFolderSummary *summary);
void                camel_message_info_ref              (void *info);
CamelMessageInfo*   camel_message_info_new_from_header  (CamelFolderSummary *summary,
                                                         struct _camel_header_raw *header);
void                camel_message_info_free             (void *info);
void*               camel_message_info_clone            (const void *info);
const void*         camel_message_info_ptr              (const CamelMessageInfo *mi,
                                                         int id);
guint32             camel_message_info_uint32           (const CamelMessageInfo *mi,
                                                         int id);
time_t              camel_message_info_time             (const CamelMessageInfo *mi,
                                                         int id);
#define             camel_message_info_uid              (mi)
#define             camel_message_info_subject          (mi)
#define             camel_message_info_from             (mi)
#define             camel_message_info_to               (mi)
#define             camel_message_info_cc               (mi)
#define             camel_message_info_mlist            (mi)
#define             camel_message_info_flags            (mi)
#define             camel_message_info_size             (mi)
#define             camel_message_info_date_sent        (mi)
#define             camel_message_info_date_received    (mi)
#define             camel_message_info_message_id       (mi)
#define             camel_message_info_references       (mi)
#define             camel_message_info_user_flags       (mi)
#define             camel_message_info_user_tags        (mi)
gboolean            camel_message_info_user_flag        (const CamelMessageInfo *mi,
                                                         const char *id);
const char*         camel_message_info_user_tag         (const CamelMessageInfo *mi,
                                                         const char *id);
gboolean            camel_message_info_set_flags        (CamelMessageInfo *mi,
                                                         guint32 mask,
                                                         guint32 set);
gboolean            camel_message_info_set_user_flag    (CamelMessageInfo *mi,
                                                         const char *id,
                                                         gboolean state);
gboolean            camel_message_info_set_user_tag     (CamelMessageInfo *mi,
                                                         const char *id,
                                                         const char *val);
void                camel_content_info_dump             (CamelMessageContentInfo *ci,
                                                         int depth);
void                camel_message_info_dump             (CamelMessageInfo *mi);

Description

Details

struct CamelFolderSummary

struct CamelFolderSummary {
	CamelObject parent;

	struct _CamelFolderSummaryPrivate *priv;

	/* header info */
	guint32 version;	/* version of file loaded/loading */
	guint32 flags;		/* flags */
	guint32 nextuid;	/* next uid? */
	time_t time;		/* timestamp for this summary (for implementors to use) */
	guint32 saved_count;	/* how many were saved/loaded */
	guint32 unread_count;	/* handy totals */
	guint32 deleted_count;
	guint32 junk_count;

	/* sizes of memory objects */
	guint32 message_info_size;
	guint32 content_info_size;

	/* memory allocators (setup automatically) */
	struct _EMemChunk *message_info_chunks;
	struct _EMemChunk *content_info_chunks;

	char *summary_path;
	gboolean build_content;	/* do we try and parse/index the content, or not? */

	GPtrArray *messages;	/* CamelMessageInfo's */
	GHashTable *messages_uid; /* CamelMessageInfo's by uid */

	struct _CamelFolder *folder; /* parent folder, for events */
	struct _CamelFolderMetaSummary *meta_summary; /* Meta summary */
};


CamelMessageInfo

typedef struct {
	CamelFolderSummary *summary;

	guint32 refcount;	/* ??? */
	char *uid;
} CamelMessageInfo;


CamelMessageInfoBase

typedef struct {
	CamelFolderSummary *summary;

	guint32 refcount;	/* ??? */
	char *uid;

	const char *subject;
	const char *from;
	const char *to;
	const char *cc;
	const char *mlist;

	guint32 flags;
	guint32 size;

	time_t date_sent;
	time_t date_received;

	CamelSummaryMessageID message_id;
	CamelSummaryReferences *references;/* from parent to root */

	struct _CamelFlag *user_flags;
	struct _CamelTag *user_tags;

	/* tree of content description - NULL if it is not available */
	CamelMessageContentInfo *content;
	struct _camel_header_param *headers;
} CamelMessageInfoBase;


CamelFolderMetaSummary

typedef struct {
	guint32 major;		/* Major version of meta-summary */
	guint32 minor;		/* Minor version of meta-summary */
	guint32 uid_len;	/* Length of UID (for implementors to use) */
	gboolean msg_expunged;	/* Whether any message is expunged or not */
	char *path;		/* Path to meta-summary-file */
} CamelFolderMetaSummary;


struct CamelMessageContentInfo

struct CamelMessageContentInfo {
	struct _CamelMessageContentInfo *next;

	struct _CamelMessageContentInfo *childs;
	struct _CamelMessageContentInfo *parent;

	CamelContentType *type;
	char *id;
	char *description;
	char *encoding;		/* this should be an enum?? */
	guint32 size;
};


enum CamelMessageFlags

typedef enum _CamelMessageFlags {
	CAMEL_MESSAGE_ANSWERED = 1<<0,
	CAMEL_MESSAGE_DELETED = 1<<1,
	CAMEL_MESSAGE_DRAFT = 1<<2,
	CAMEL_MESSAGE_FLAGGED = 1<<3,
	CAMEL_MESSAGE_SEEN = 1<<4,

	/* these aren't really system flag bits, but are convenience flags */
	CAMEL_MESSAGE_ATTACHMENTS = 1<<5,
	CAMEL_MESSAGE_ANSWERED_ALL = 1<<6,
	CAMEL_MESSAGE_JUNK = 1<<7,
	CAMEL_MESSAGE_SECURE = 1<<8,
	CAMEL_MESSAGE_USER_NOT_DELETABLE = 1<<9,
	CAMEL_MESSAGE_HIDDEN = 1<<10,
	CAMEL_MESSAGE_NOTJUNK = 1<<11,

	/* following flags are for the folder, and are not really permanent flags */
	CAMEL_MESSAGE_FOLDER_FLAGGED = 1<<16, /* for use by the folder implementation */

	/* flags after 1<<16 are used by camel providers,
           if adding non permanent flags, add them to the end  */

	CAMEL_MESSAGE_JUNK_LEARN = 1<<30, /* used when setting CAMEL_MESSAGE_JUNK flag
					     to say that we request junk plugin
					     to learn that message as junk/non junk */
	CAMEL_MESSAGE_USER = 1<<31 /* supports user flags */
} CamelMessageFlags;


CAMEL_MESSAGE_SYSTEM_MASK

#define CAMEL_MESSAGE_SYSTEM_MASK (0xffff << 16)


CamelFlag

typedef struct {
	struct _CamelFlag *next;
	char name[1];		/* name allocated as part of the structure */
} CamelFlag;


CamelTag

typedef struct {
	struct _CamelTag *next;
	char *value;
	char name[1];		/* name allocated as part of the structure */
} CamelTag;


CamelSummaryMessageID

typedef struct {
	union {
		guint64 id;
		unsigned char hash[8];
		struct {
			guint32 hi;
			guint32 lo;
		} part;
	} id;
} CamelSummaryMessageID;


CamelSummaryReferences

typedef struct {
	int size;
	CamelSummaryMessageID references[1];
} CamelSummaryReferences;


enum CamelFolderSummaryFlags

typedef enum _CamelFolderSummaryFlags {
	CAMEL_SUMMARY_DIRTY = 1<<0
} CamelFolderSummaryFlags;


camel_folder_summary_new ()

CamelFolderSummary* camel_folder_summary_new            (struct _CamelFolder *folder);

folder :

Returns :


camel_folder_summary_set_filename ()

void                camel_folder_summary_set_filename   (CamelFolderSummary *summary,
                                                         const char *filename);

summary :

filename :


camel_folder_summary_set_index ()

void                camel_folder_summary_set_index      (CamelFolderSummary *summary,
                                                         CamelIndex *index);

summary :

index :


camel_folder_summary_set_build_content ()

void                camel_folder_summary_set_build_content
                                                        (CamelFolderSummary *summary,
                                                         gboolean state);

summary :

state :


camel_folder_summary_next_uid ()

guint32             camel_folder_summary_next_uid       (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_next_uid_string ()

char*               camel_folder_summary_next_uid_string
                                                        (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_set_uid ()

void                camel_folder_summary_set_uid        (CamelFolderSummary *summary,
                                                         guint32 uid);

summary :

uid :


camel_folder_summary_load ()

int                 camel_folder_summary_load           (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_save ()

int                 camel_folder_summary_save           (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_header_load ()

int                 camel_folder_summary_header_load    (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_touch ()

void                camel_folder_summary_touch          (CamelFolderSummary *summary);

summary :


camel_folder_summary_add ()

void                camel_folder_summary_add            (CamelFolderSummary *summary,
                                                         CamelMessageInfo *info);

summary :

info :


camel_folder_summary_add_from_header ()

CamelMessageInfo*   camel_folder_summary_add_from_header
                                                        (CamelFolderSummary *summary,
                                                         struct _camel_header_raw *headers);

summary :

headers :

Returns :


camel_folder_summary_add_from_parser ()

CamelMessageInfo*   camel_folder_summary_add_from_parser
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeParser *parser);

summary :

parser :

Returns :


camel_folder_summary_add_from_message ()

CamelMessageInfo*   camel_folder_summary_add_from_message
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeMessage *message);

summary :

message :

Returns :


camel_folder_summary_info_new_from_header ()

CamelMessageInfo*   camel_folder_summary_info_new_from_header
                                                        (CamelFolderSummary *summary,
                                                         struct _camel_header_raw *headers);

summary :

headers :

Returns :


camel_folder_summary_info_new_from_parser ()

CamelMessageInfo*   camel_folder_summary_info_new_from_parser
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeParser *parser);

summary :

parser :

Returns :


camel_folder_summary_info_new_from_message ()

CamelMessageInfo*   camel_folder_summary_info_new_from_message
                                                        (CamelFolderSummary *summary,
                                                         CamelMimeMessage *message);

summary :

message :

Returns :


camel_folder_summary_content_info_new ()

CamelMessageContentInfo* camel_folder_summary_content_info_new
                                                        (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_content_info_free ()

void                camel_folder_summary_content_info_free
                                                        (CamelFolderSummary *summary,
                                                         CamelMessageContentInfo *ci);

summary :

ci :


camel_folder_summary_remove ()

void                camel_folder_summary_remove         (CamelFolderSummary *summary,
                                                         CamelMessageInfo *info);

summary :

info :


camel_folder_summary_remove_uid ()

void                camel_folder_summary_remove_uid     (CamelFolderSummary *summary,
                                                         const char *uid);

summary :

uid :


camel_folder_summary_remove_index ()

void                camel_folder_summary_remove_index   (CamelFolderSummary *summary,
                                                         int index);

summary :

index :


camel_folder_summary_remove_range ()

void                camel_folder_summary_remove_range   (CamelFolderSummary *summary,
                                                         int start,
                                                         int end);

summary :

start :

end :


camel_folder_summary_clear ()

void                camel_folder_summary_clear          (CamelFolderSummary *summary);

summary :


camel_folder_summary_count ()

int                 camel_folder_summary_count          (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_index ()

CamelMessageInfo*   camel_folder_summary_index          (CamelFolderSummary *summary,
                                                         int index);

summary :

index :

Returns :


camel_folder_summary_uid ()

CamelMessageInfo*   camel_folder_summary_uid            (CamelFolderSummary *summary,
                                                         const char *uid);

summary :

uid :

Returns :


camel_folder_summary_array ()

GPtrArray*          camel_folder_summary_array          (CamelFolderSummary *summary);

summary :

Returns :


camel_folder_summary_array_free ()

void                camel_folder_summary_array_free     (CamelFolderSummary *summary,
                                                         GPtrArray *array);

summary :

array :


camel_folder_summary_encode_token ()

int                 camel_folder_summary_encode_token   (FILE *out,
                                                         const char *str);

out :

str :

Returns :


camel_folder_summary_decode_token ()

int                 camel_folder_summary_decode_token   (FILE *in,
                                                         char **str);

in :

str :

Returns :


camel_flag_get ()

gboolean            camel_flag_get                      (CamelFlag **list,
                                                         const char *name);

list :

name :

Returns :


camel_flag_set ()

gboolean            camel_flag_set                      (CamelFlag **list,
                                                         const char *name,
                                                         gboolean state);

list :

name :

state :

Returns :


camel_flag_list_copy ()

gboolean            camel_flag_list_copy                (CamelFlag **to,
                                                         CamelFlag **from);

to :

from :

Returns :


camel_flag_list_size ()

int                 camel_flag_list_size                (CamelFlag **list);

list :

Returns :


camel_flag_list_free ()

void                camel_flag_list_free                (CamelFlag **list);

list :


camel_system_flag ()

guint32             camel_system_flag                   (const char *name);

name :

Returns :


camel_system_flag_get ()

gboolean            camel_system_flag_get               (guint32 flags,
                                                         const char *name);

flags :

name :

Returns :


camel_tag_get ()

const char*         camel_tag_get                       (CamelTag **list,
                                                         const char *name);

list :

name :

Returns :


camel_tag_set ()

gboolean            camel_tag_set                       (CamelTag **list,
                                                         const char *name,
                                                         const char *value);

list :

name :

value :

Returns :


camel_tag_list_copy ()

gboolean            camel_tag_list_copy                 (CamelTag **to,
                                                         CamelTag **from);

to :

from :

Returns :


camel_tag_list_size ()

int                 camel_tag_list_size                 (CamelTag **list);

list :

Returns :


camel_tag_list_free ()

void                camel_tag_list_free                 (CamelTag **list);

list :


camel_message_info_new ()

void*               camel_message_info_new              (CamelFolderSummary *summary);

summary :

Returns :


camel_message_info_ref ()

void                camel_message_info_ref              (void *info);

info :


camel_message_info_new_from_header ()

CamelMessageInfo*   camel_message_info_new_from_header  (CamelFolderSummary *summary,
                                                         struct _camel_header_raw *header);

summary :

header :

Returns :


camel_message_info_free ()

void                camel_message_info_free             (void *info);

info :


camel_message_info_clone ()

void*               camel_message_info_clone            (const void *info);

info :

Returns :


camel_message_info_ptr ()

const void*         camel_message_info_ptr              (const CamelMessageInfo *mi,
                                                         int id);

mi :

id :

Returns :


camel_message_info_uint32 ()

guint32             camel_message_info_uint32           (const CamelMessageInfo *mi,
                                                         int id);

mi :

id :

Returns :


camel_message_info_time ()

time_t              camel_message_info_time             (const CamelMessageInfo *mi,
                                                         int id);

mi :

id :

Returns :


camel_message_info_uid()

#define camel_message_info_uid(mi) ((const char *)((const CamelMessageInfo *)mi)->uid)

mi :


camel_message_info_subject()

#define camel_message_info_subject(mi) ((const char *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_SUBJECT))

mi :


camel_message_info_from()

#define camel_message_info_from(mi) ((const char *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_FROM))

mi :


camel_message_info_to()

#define camel_message_info_to(mi) ((const char *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_TO))

mi :


camel_message_info_cc()

#define camel_message_info_cc(mi) ((const char *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_CC))

mi :


camel_message_info_mlist()

#define camel_message_info_mlist(mi) ((const char *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_MLIST))

mi :


camel_message_info_flags()

#define camel_message_info_flags(mi) camel_message_info_uint32((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_FLAGS)

mi :


camel_message_info_size()

#define camel_message_info_size(mi) camel_message_info_uint32((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_SIZE)

mi :


camel_message_info_date_sent()

#define camel_message_info_date_sent(mi) camel_message_info_time((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_DATE_SENT)

mi :


camel_message_info_date_received()

#define camel_message_info_date_received(mi) camel_message_info_time((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_DATE_RECEIVED)

mi :


camel_message_info_message_id()

#define camel_message_info_message_id(mi) ((const CamelSummaryMessageID *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_MESSAGE_ID))

mi :


camel_message_info_references()

#define camel_message_info_references(mi) ((const CamelSummaryReferences *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_REFERENCES))

mi :


camel_message_info_user_flags()

#define camel_message_info_user_flags(mi) ((const CamelFlag *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_USER_FLAGS))

mi :


camel_message_info_user_tags()

#define camel_message_info_user_tags(mi) ((const CamelTag *)camel_message_info_ptr((const CamelMessageInfo *)mi, CAMEL_MESSAGE_INFO_USER_TAGS))

mi :


camel_message_info_user_flag ()

gboolean            camel_message_info_user_flag        (const CamelMessageInfo *mi,
                                                         const char *id);

mi :

id :

Returns :


camel_message_info_user_tag ()

const char*         camel_message_info_user_tag         (const CamelMessageInfo *mi,
                                                         const char *id);

mi :

id :

Returns :


camel_message_info_set_flags ()

gboolean            camel_message_info_set_flags        (CamelMessageInfo *mi,
                                                         guint32 mask,
                                                         guint32 set);

mi :

mask :

set :

Returns :


camel_message_info_set_user_flag ()

gboolean            camel_message_info_set_user_flag    (CamelMessageInfo *mi,
                                                         const char *id,
                                                         gboolean state);

mi :

id :

state :

Returns :


camel_message_info_set_user_tag ()

gboolean            camel_message_info_set_user_tag     (CamelMessageInfo *mi,
                                                         const char *id,
                                                         const char *val);

mi :

id :

val :

Returns :


camel_content_info_dump ()

void                camel_content_info_dump             (CamelMessageContentInfo *ci,
                                                         int depth);

ci :

depth :


camel_message_info_dump ()

void                camel_message_info_dump             (CamelMessageInfo *mi);

mi :