<refentry id="camel-CamelStoreSummary">
<refmeta>
<refentrytitle role="top_of_page" id="camel-CamelStoreSummary.top_of_page">CamelStoreSummary</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>CAMEL Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>CamelStoreSummary</refname>
<refpurpose></refpurpose>
</refnamediv>

<refsynopsisdiv id="camel-CamelStoreSummary.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>
                    <link linkend="CamelStoreInfo">CamelStoreInfo</link>;
enum                <link linkend="CamelStoreInfoFlags">CamelStoreInfoFlags</link>;
                    <link linkend="CamelStoreSummary">CamelStoreSummary</link>;
#define             <link linkend="CAMEL-STORE-INFO-FOLDER-UNKNOWN--CAPS">CAMEL_STORE_INFO_FOLDER_UNKNOWN</link>
enum                <link linkend="CamelStoreSummaryFlags">CamelStoreSummaryFlags</link>;
<link linkend="CamelStoreSummary">CamelStoreSummary</link> * <link linkend="camel-store-summary-new">camel_store_summary_new</link>             (void);
<link linkend="void">void</link>                <link linkend="camel-store-summary-set-filename">camel_store_summary_set_filename</link>    (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *filename);
<link linkend="void">void</link>                <link linkend="camel-store-summary-set-uri-base">camel_store_summary_set_uri_base</link>    (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelURL">CamelURL</link> *base);
<link linkend="int">int</link>                 <link linkend="camel-store-summary-load">camel_store_summary_load</link>            (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="int">int</link>                 <link linkend="camel-store-summary-save">camel_store_summary_save</link>            (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="int">int</link>                 <link linkend="camel-store-summary-header-load">camel_store_summary_header_load</link>     (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="void">void</link>                <link linkend="camel-store-summary-touch">camel_store_summary_touch</link>           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="void">void</link>                <link linkend="camel-store-summary-add">camel_store_summary_add</link>             (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);
<link linkend="CamelStoreInfo">CamelStoreInfo</link> *    <link linkend="camel-store-summary-add-from-path">camel_store_summary_add_from_path</link>   (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);
<link linkend="CamelStoreInfo">CamelStoreInfo</link> *    <link linkend="camel-store-summary-info-new">camel_store_summary_info_new</link>        (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="CamelStoreInfo">CamelStoreInfo</link> *    <link linkend="camel-store-summary-info-new-from-path">camel_store_summary_info_new_from_path</link>
                                                        (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);
<link linkend="void">void</link>                <link linkend="camel-store-summary-info-ref">camel_store_summary_info_ref</link>        (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);
<link linkend="void">void</link>                <link linkend="camel-store-summary-info-free">camel_store_summary_info_free</link>       (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);
<link linkend="void">void</link>                <link linkend="camel-store-summary-remove">camel_store_summary_remove</link>          (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);
<link linkend="void">void</link>                <link linkend="camel-store-summary-remove-path">camel_store_summary_remove_path</link>     (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);
<link linkend="void">void</link>                <link linkend="camel-store-summary-remove-index">camel_store_summary_remove_index</link>    (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="int">int</link> index);
<link linkend="void">void</link>                <link linkend="camel-store-summary-clear">camel_store_summary_clear</link>           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="int">int</link>                 <link linkend="camel-store-summary-count">camel_store_summary_count</link>           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="CamelStoreInfo">CamelStoreInfo</link> *    <link linkend="camel-store-summary-index">camel_store_summary_index</link>           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="int">int</link> index);
<link linkend="CamelStoreInfo">CamelStoreInfo</link> *    <link linkend="camel-store-summary-path">camel_store_summary_path</link>            (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);
<link linkend="GPtrArray">GPtrArray</link> *         <link linkend="camel-store-summary-array">camel_store_summary_array</link>           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);
<link linkend="void">void</link>                <link linkend="camel-store-summary-array-free">camel_store_summary_array_free</link>      (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="GPtrArray">GPtrArray</link> *array);
const <link linkend="char">char</link> *        <link linkend="camel-store-info-string">camel_store_info_string</link>             (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info,
                                                         <link linkend="int">int</link> type);
<link linkend="void">void</link>                <link linkend="camel-store-info-set-string">camel_store_info_set_string</link>         (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info,
                                                         <link linkend="int">int</link> type,
                                                         const <link linkend="char">char</link> *value);
#define             <link linkend="camel-store-info-path">camel_store_info_path</link>               (s, i)
#define             <link linkend="camel-store-info-uri">camel_store_info_uri</link>                (s, i)
#define             <link linkend="camel-store-info-name">camel_store_info_name</link>               (s, i)
</synopsis>
</refsynopsisdiv>









<refsect1 id="camel-CamelStoreSummary.description" role="desc">
<title role="desc.title">Description</title>
<para>
</para>
</refsect1>

<refsect1 id="camel-CamelStoreSummary.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="CamelStoreInfo" role="struct">
<title>CamelStoreInfo</title>
<indexterm zone="CamelStoreInfo"><primary sortas="CamelStoreInfo">CamelStoreInfo</primary></indexterm><programlisting>typedef struct {
	guint32 refcount;
	char *uri;
	char *path;
	guint32 flags;
	guint32 unread;
	guint32 total;
} CamelStoreInfo;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="CamelStoreInfoFlags" role="enum">
<title>enum CamelStoreInfoFlags</title>
<indexterm zone="CamelStoreInfoFlags"><primary sortas="CamelStoreInfoFlags">CamelStoreInfoFlags</primary></indexterm><programlisting>typedef enum _CamelStoreInfoFlags {
	CAMEL_STORE_INFO_FOLDER_NOSELECT = 1&lt;&lt;0,
	CAMEL_STORE_INFO_FOLDER_NOINFERIORS = 1&lt;&lt;1,
	CAMEL_STORE_INFO_FOLDER_CHILDREN = 1&lt;&lt;2,
	CAMEL_STORE_INFO_FOLDER_NOCHILDREN = 1&lt;&lt;3,
	CAMEL_STORE_INFO_FOLDER_SUBSCRIBED = 1&lt;&lt;4,
	CAMEL_STORE_INFO_FOLDER_VIRTUAL = 1&lt;&lt;5,
	CAMEL_STORE_INFO_FOLDER_SYSTEM = 1&lt;&lt;6,
	CAMEL_STORE_INFO_FOLDER_VTRASH = 1&lt;&lt;7,
	CAMEL_STORE_INFO_FOLDER_SHARED_BY_ME = 1&lt;&lt;8,
	CAMEL_STORE_INFO_FOLDER_SHARED_TO_ME = 1&lt;&lt;9,

	/* not in camle-store.h yet */
	CAMEL_STORE_INFO_FOLDER_READONLY = 1&lt;&lt;13,

	CAMEL_STORE_INFO_FOLDER_FLAGGED = 1&lt;&lt;31
} CamelStoreInfoFlags;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="CamelStoreSummary" role="struct">
<title>CamelStoreSummary</title>
<indexterm zone="CamelStoreSummary"><primary sortas="CamelStoreSummary">CamelStoreSummary</primary></indexterm><programlisting>typedef struct {
	CamelObject parent;

	struct _CamelStoreSummaryPrivate *priv;

	/* header info */
	guint32 version;	/* version of base part of file */
	guint32 flags;		/* flags */
	guint32 count;		/* how many were saved/loaded */
	time_t time;		/* timestamp for this summary (for implementors to use) */
	struct _CamelURL *uri_base;	/* url of base part of summary */

	/* sizes of memory objects */
	guint32 store_info_size;

	/* memory allocators (setup automatically) */
	struct _EMemChunk *store_info_chunks;

	char *summary_path;

	GPtrArray *folders;	/* CamelStoreInfo's */
	GHashTable *folders_path; /* CamelStoreInfo's by path name */
} CamelStoreSummary;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="CAMEL-STORE-INFO-FOLDER-UNKNOWN--CAPS" role="macro">
<title>CAMEL_STORE_INFO_FOLDER_UNKNOWN</title>
<indexterm zone="CAMEL-STORE-INFO-FOLDER-UNKNOWN--CAPS"><primary sortas="CAMEL_STORE_INFO_FOLDER_UNKNOWN">CAMEL_STORE_INFO_FOLDER_UNKNOWN</primary></indexterm><programlisting>#define CAMEL_STORE_INFO_FOLDER_UNKNOWN (~0)
</programlisting>
<para>
</para></refsect2>
<refsect2 id="CamelStoreSummaryFlags" role="enum">
<title>enum CamelStoreSummaryFlags</title>
<indexterm zone="CamelStoreSummaryFlags"><primary sortas="CamelStoreSummaryFlags">CamelStoreSummaryFlags</primary></indexterm><programlisting>typedef enum _CamelStoreSummaryFlags {
	CAMEL_STORE_SUMMARY_DIRTY = 1&lt;&lt;0,
	CAMEL_STORE_SUMMARY_FRAGMENT = 1&lt;&lt;1 /* path name is stored in fragment rather than path */
} CamelStoreSummaryFlags;
</programlisting>
<para>
</para></refsect2>
<refsect2 id="camel-store-summary-new" role="function">
<title>camel_store_summary_new ()</title>
<indexterm zone="camel-store-summary-new"><primary sortas="camel_store_summary_new">camel_store_summary_new</primary></indexterm><programlisting><link linkend="CamelStoreSummary">CamelStoreSummary</link> * camel_store_summary_new             (void);</programlisting>
<para>
Create a new <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> a new <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-set-filename" role="function">
<title>camel_store_summary_set_filename ()</title>
<indexterm zone="camel-store-summary-set-filename"><primary sortas="camel_store_summary_set_filename">camel_store_summary_set_filename</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_set_filename    (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *filename);</programlisting>
<para>
Set the filename where the summary will be loaded to/saved from.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>filename</parameter>&#160;:</term>
<listitem><simpara> a filename
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-set-uri-base" role="function">
<title>camel_store_summary_set_uri_base ()</title>
<indexterm zone="camel-store-summary-set-uri-base"><primary sortas="camel_store_summary_set_uri_base">camel_store_summary_set_uri_base</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_set_uri_base    (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelURL">CamelURL</link> *base);</programlisting>
<para>
Sets the base URI for the summary.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>base</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelURL"><type>CamelURL</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-load" role="function">
<title>camel_store_summary_load ()</title>
<indexterm zone="camel-store-summary-load"><primary sortas="camel_store_summary_load">camel_store_summary_load</primary></indexterm><programlisting><link linkend="int">int</link>                 camel_store_summary_load            (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Load the summary off disk.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success or <link linkend="1--CAPS"><literal>-1</literal></link> on fail
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-save" role="function">
<title>camel_store_summary_save ()</title>
<indexterm zone="camel-store-summary-save"><primary sortas="camel_store_summary_save">camel_store_summary_save</primary></indexterm><programlisting><link linkend="int">int</link>                 camel_store_summary_save            (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Writes the summary to disk.  The summary is only written if changes
have occured.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on succes or <link linkend="1--CAPS"><literal>-1</literal></link> on fail
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-header-load" role="function">
<title>camel_store_summary_header_load ()</title>
<indexterm zone="camel-store-summary-header-load"><primary sortas="camel_store_summary_header_load">camel_store_summary_header_load</primary></indexterm><programlisting><link linkend="int">int</link>                 camel_store_summary_header_load     (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Only load the header information from the summary,
keep the rest on disk.  This should only be done on
a fresh summary object.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="0--CAPS"><literal>0</literal></link> on success or <link linkend="1--CAPS"><literal>-1</literal></link> on fail
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-touch" role="function">
<title>camel_store_summary_touch ()</title>
<indexterm zone="camel-store-summary-touch"><primary sortas="camel_store_summary_touch">camel_store_summary_touch</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_touch           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Mark the summary as changed, so that a save will force it to be
written back to disk.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-add" role="function">
<title>camel_store_summary_add ()</title>
<indexterm zone="camel-store-summary-add"><primary sortas="camel_store_summary_add">camel_store_summary_add</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_add             (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);</programlisting>
<para>
Adds a new <parameter>info</parameter> record to the summary.  If <parameter>info->uid</parameter> is <link linkend="NULL--CAPS"><literal>NULL</literal></link>,
then a new uid is automatically re-assigned by calling
<link linkend="camel-store-summary-next-uid-string"><type>camel_store_summary_next_uid_string</type></link>.
</para>
<para>
The <parameter>info</parameter> record should have been generated by calling one of the
info_new_*() functions, as it will be free'd based on the summary
class.  And MUST NOT be allocated directly using malloc.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>info</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-add-from-path" role="function">
<title>camel_store_summary_add_from_path ()</title>
<indexterm zone="camel-store-summary-add-from-path"><primary sortas="camel_store_summary_add_from_path">camel_store_summary_add_from_path</primary></indexterm><programlisting><link linkend="CamelStoreInfo">CamelStoreInfo</link> *    camel_store_summary_add_from_path   (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);</programlisting>
<para>
Build a new info record based on the name, and add it to the summary.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>path</parameter>&#160;:</term>
<listitem><simpara> item path
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the newly added record
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-info-new" role="function">
<title>camel_store_summary_info_new ()</title>
<indexterm zone="camel-store-summary-info-new"><primary sortas="camel_store_summary_info_new">camel_store_summary_info_new</primary></indexterm><programlisting><link linkend="CamelStoreInfo">CamelStoreInfo</link> *    camel_store_summary_info_new        (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Allocate a new <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>, suitable for adding to this
summary.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the newly allocated <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-info-new-from-path" role="function">
<title>camel_store_summary_info_new_from_path ()</title>
<indexterm zone="camel-store-summary-info-new-from-path"><primary sortas="camel_store_summary_info_new_from_path">camel_store_summary_info_new_from_path</primary></indexterm><programlisting><link linkend="CamelStoreInfo">CamelStoreInfo</link> *    camel_store_summary_info_new_from_path
                                                        (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);</programlisting>
<para>
Create a new info record from a name.
</para>
<para>
This info record MUST be freed using
<link linkend="camel-store-summary-info-free"><type>camel_store_summary_info_free</type></link>, <link linkend="camel-store-info-free"><type>camel_store_info_free</type></link> will not
work.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>path</parameter>&#160;:</term>
<listitem><simpara> item path
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link> associated with <parameter>path</parameter>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-info-ref" role="function">
<title>camel_store_summary_info_ref ()</title>
<indexterm zone="camel-store-summary-info-ref"><primary sortas="camel_store_summary_info_ref">camel_store_summary_info_ref</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_info_ref        (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);</programlisting>
<para>
Add an extra reference to <parameter>info</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>info</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-info-free" role="function">
<title>camel_store_summary_info_free ()</title>
<indexterm zone="camel-store-summary-info-free"><primary sortas="camel_store_summary_info_free">camel_store_summary_info_free</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_info_free       (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);</programlisting>
<para>
Unref and potentially free <parameter>info</parameter>, and all associated memory.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>info</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-remove" role="function">
<title>camel_store_summary_remove ()</title>
<indexterm zone="camel-store-summary-remove"><primary sortas="camel_store_summary_remove">camel_store_summary_remove</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_remove          (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info);</programlisting>
<para>
Remove a specific <parameter>info</parameter> record from the summary.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>info</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-remove-path" role="function">
<title>camel_store_summary_remove_path ()</title>
<indexterm zone="camel-store-summary-remove-path"><primary sortas="camel_store_summary_remove_path">camel_store_summary_remove_path</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_remove_path     (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);</programlisting>
<para>
Remove a specific info record from the summary, by <parameter>path</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>path</parameter>&#160;:</term>
<listitem><simpara> item path
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-remove-index" role="function">
<title>camel_store_summary_remove_index ()</title>
<indexterm zone="camel-store-summary-remove-index"><primary sortas="camel_store_summary_remove_index">camel_store_summary_remove_index</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_remove_index    (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="int">int</link> index);</programlisting>
<para>
Remove a specific info record from the summary, by index.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>index</parameter>&#160;:</term>
<listitem><simpara> item index
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-clear" role="function">
<title>camel_store_summary_clear ()</title>
<indexterm zone="camel-store-summary-clear"><primary sortas="camel_store_summary_clear">camel_store_summary_clear</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_clear           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Empty the summary contents.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-count" role="function">
<title>camel_store_summary_count ()</title>
<indexterm zone="camel-store-summary-count"><primary sortas="camel_store_summary_count">camel_store_summary_count</primary></indexterm><programlisting><link linkend="int">int</link>                 camel_store_summary_count           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Get the number of summary items stored in this summary.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the number of items int he summary.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-index" role="function">
<title>camel_store_summary_index ()</title>
<indexterm zone="camel-store-summary-index"><primary sortas="camel_store_summary_index">camel_store_summary_index</primary></indexterm><programlisting><link linkend="CamelStoreInfo">CamelStoreInfo</link> *    camel_store_summary_index           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="int">int</link> index);</programlisting>
<para>
Retrieve a summary item by index number.
</para>
<para>
A referenced to the summary item is returned, which may be ref'd or
free'd as appropriate.
</para>
<para>
It must be freed using <link linkend="camel-store-summary-info-free"><type>camel_store_summary_info_free</type></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>index</parameter>&#160;:</term>
<listitem><simpara> record index
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the summary item, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if <parameter>index</parameter> is out of range
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-path" role="function">
<title>camel_store_summary_path ()</title>
<indexterm zone="camel-store-summary-path"><primary sortas="camel_store_summary_path">camel_store_summary_path</primary></indexterm><programlisting><link linkend="CamelStoreInfo">CamelStoreInfo</link> *    camel_store_summary_path            (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="char">char</link> *path);</programlisting>
<para>
Retrieve a summary item by path name.
</para>
<para>
A referenced to the summary item is returned, which may be ref'd or
free'd as appropriate.
</para>
<para>
It must be freed using <link linkend="camel-store-summary-info-free"><type>camel_store_summary_info_free</type></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>path</parameter>&#160;:</term>
<listitem><simpara> path to the item
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the summary item, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if the <parameter>path</parameter> name is not
available
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-array" role="function">
<title>camel_store_summary_array ()</title>
<indexterm zone="camel-store-summary-array"><primary sortas="camel_store_summary_array">camel_store_summary_array</primary></indexterm><programlisting><link linkend="GPtrArray">GPtrArray</link> *         camel_store_summary_array           (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary);</programlisting>
<para>
Obtain a copy of the summary array.  This is done atomically,
so cannot contain empty entries.
</para>
<para>
It must be freed using <link linkend="camel-store-summary-array-free"><type>camel_store_summary_array_free</type></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the summary array
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-summary-array-free" role="function">
<title>camel_store_summary_array_free ()</title>
<indexterm zone="camel-store-summary-array-free"><primary sortas="camel_store_summary_array_free">camel_store_summary_array_free</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_summary_array_free      (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="GPtrArray">GPtrArray</link> *array);</programlisting>
<para>
Free the folder summary array.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>array</parameter>&#160;:</term>
<listitem><simpara> the summary array as gotten from <link linkend="camel-store-summary-array"><type>camel_store_summary_array</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-info-string" role="function">
<title>camel_store_info_string ()</title>
<indexterm zone="camel-store-info-string"><primary sortas="camel_store_info_string">camel_store_info_string</primary></indexterm><programlisting>const <link linkend="char">char</link> *        camel_store_info_string             (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         const <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info,
                                                         <link linkend="int">int</link> type);</programlisting>
<para>
Get a specific string from the <parameter>info</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>info</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>type</parameter>&#160;:</term>
<listitem><simpara> specific string being requested
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the string value
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-info-set-string" role="function">
<title>camel_store_info_set_string ()</title>
<indexterm zone="camel-store-info-set-string"><primary sortas="camel_store_info_set_string">camel_store_info_set_string</primary></indexterm><programlisting><link linkend="void">void</link>                camel_store_info_set_string         (<link linkend="CamelStoreSummary">CamelStoreSummary</link> *summary,
                                                         <link linkend="CamelStoreInfo">CamelStoreInfo</link> *info,
                                                         <link linkend="int">int</link> type,
                                                         const <link linkend="char">char</link> *value);</programlisting>
<para>
Set a specific string on the <parameter>info</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>summary</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreSummary"><type>CamelStoreSummary</type></link> object
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>info</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="CamelStoreInfo"><type>CamelStoreInfo</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>type</parameter>&#160;:</term>
<listitem><simpara> specific string being set
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>value</parameter>&#160;:</term>
<listitem><simpara> string value to set
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-info-path" role="macro">
<title>camel_store_info_path()</title>
<indexterm zone="camel-store-info-path"><primary sortas="camel_store_info_path">camel_store_info_path</primary></indexterm><programlisting>#define camel_store_info_path(s, i) (camel_store_info_string((CamelStoreSummary *)s, (const CamelStoreInfo *)i, CAMEL_STORE_INFO_PATH))
</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>s</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>i</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-info-uri" role="macro">
<title>camel_store_info_uri()</title>
<indexterm zone="camel-store-info-uri"><primary sortas="camel_store_info_uri">camel_store_info_uri</primary></indexterm><programlisting>#define camel_store_info_uri(s, i) (camel_store_info_string((CamelStoreSummary *)s, (const CamelStoreInfo *)i, CAMEL_STORE_INFO_URI))
</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>s</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>i</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="camel-store-info-name" role="macro">
<title>camel_store_info_name()</title>
<indexterm zone="camel-store-info-name"><primary sortas="camel_store_info_name">camel_store_info_name</primary></indexterm><programlisting>#define camel_store_info_name(s, i) (camel_store_info_string((CamelStoreSummary *)s, (const CamelStoreInfo *)i, CAMEL_STORE_INFO_NAME))
</programlisting>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>s</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>i</parameter>&#160;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
