## camel-folder-thread camel-folder-thread |

## Functions

CamelFolderThread * | camel_folder_thread_messages_new ()
void | camel_folder_thread_messages_apply ()
CamelFolderThread * | camel_folder_thread_messages_new_summary ()
void | camel_folder_thread_messages_add ()
void | camel_folder_thread_messages_remove ()
void | camel_folder_thread_messages_ref ()
void | camel_folder_thread_messages_unref ()
gint | camel_folder_threaded_messages_dump ()

## Types and Values

| CamelFolderThreadNode
| CamelFolderThread

## Description

## Functions

### camel_folder_thread_messages_new ()

    CamelFolderThread *
    camel_folder_thread_messages_new (CamelFolder *folder,
                                      GPtrArray *uids,
                                      gboolean thread_subject);

Thread a (subset) of the messages in a folder. And sort the result in summary order.

If `thread_subject` is `TRUE`, messages with related subjects will also be threaded. The default behaviour is to only thread based on message-id.

This function is probably to be removed soon.

#### Parameters

uids | The subset of uid's to thread. If NULL. then thread all uid's in `folder` . |
thread_subject | thread based on subject also |

#### Returns

A CamelFolderThread contianing a tree of CamelFolderThreadNode's which represent the threaded structure of the messages.

### camel_folder_thread_messages_apply ()

    void
    camel_folder_thread_messages_apply (CamelFolderThread *thread,
                                        GPtrArray *uids);

### camel_folder_thread_messages_new_summary ()

    CamelFolderThread *
    camel_folder_thread_messages_new_summary
                                   (GPtrArray *summary);

Thread a list of MessageInfo's. The summary must remain valid for the life of the CamelFolderThread created by this function, and it is upto the caller to ensure this.

#### Parameters

summary | Array of CamelMessageInfo's to thread. |

#### Returns

A CamelFolderThread contianing a tree of CamelFolderThreadNode's which represent the threaded structure of the messages.

### camel_folder_thread_messages_add ()

    void
    camel_folder_thread_messages_add (CamelFolderThread *thread,
                                      GPtrArray *summary);

### camel_folder_thread_messages_remove ()

    void
    camel_folder_thread_messages_remove (CamelFolderThread *thread,
                                         GPtrArray *uids);

### camel_folder_thread_messages_ref ()

    void
    camel_folder_thread_messages_ref (CamelFolderThread *thread);

### camel_folder_thread_messages_unref ()

    void
    camel_folder_thread_messages_unref (CamelFolderThread *thread);

Free all memory associated with the thread descriptor `thread` .

### camel_folder_threaded_messages_dump ()

    gint
    camel_folder_threaded_messages_dump (CamelFolderThreadNode *c);

## Types and Values

### CamelFolderThreadNode

    typedef struct {
    	struct _CamelFolderThreadNode *next, *parent, *child;
    	const CamelMessageInfo *message;
    	gchar *root_subject; /* cached root equivalent subject */
    	guint32 order : 31;
    	guint32 re:1;			/* re version of subject? */
    } CamelFolderThreadNode;

### CamelFolderThread

    typedef struct {
    	guint32 refcount : 31;
    	guint32 subject : 1;

    	struct _CamelFolderThreadNode *tree;
    	CamelMemChunk *node_chunks;
    	CamelFolder *folder;
    	GPtrArray *summary;
    } CamelFolderThread;