Initialize the gmime for upstream
[platform/upstream/gmime.git] / gmime / gmime-header.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*  GMime
3  *  Copyright (C) 2000-2012 Jeffrey Stedfast
4  *
5  *  This library is free software; you can redistribute it and/or
6  *  modify it under the terms of the GNU Lesser General Public License
7  *  as published by the Free Software Foundation; either version 2.1
8  *  of the License, or (at your option) any later version.
9  *
10  *  This library is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  *  Lesser General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Lesser General Public
16  *  License along with this library; if not, write to the Free
17  *  Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
18  *  02110-1301, USA.
19  */
20
21
22 #ifndef __GMIME_HEADER_H__
23 #define __GMIME_HEADER_H__
24
25 #include <glib.h>
26 #include <gmime/gmime-stream.h>
27
28 G_BEGIN_DECLS
29
30 typedef struct _GMimeHeader GMimeHeader;
31
32
33 /**
34  * GMimeHeaderForeachFunc:
35  * @name: The field name.
36  * @value: The field value.
37  * @user_data: The user-supplied callback data.
38  *
39  * Function signature for the callback to g_mime_header_list_foreach().
40  **/
41 typedef void (* GMimeHeaderForeachFunc) (const char *name, const char *value, gpointer user_data);
42
43
44 /**
45  * GMimeHeaderList:
46  *
47  * A message or mime-part header.
48  **/
49 typedef struct _GMimeHeaderList GMimeHeaderList;
50
51
52 /**
53  * GMimeHeaderIter:
54  * @hdrlist: a #GMimeHeaderList
55  * @cursor: a #GMimeHeader
56  * @version: the version of @hdrlist when initialized
57  *
58  * A message or mime-part header iterator. All members should be
59  * considered private.
60  **/
61 typedef struct _GMimeHeaderIter GMimeHeaderIter;
62
63 struct _GMimeHeaderIter {
64         GMimeHeaderList *hdrlist;
65         GMimeHeader *cursor;
66         guint32 version;
67 };
68
69
70 GMimeHeaderIter *g_mime_header_iter_new (void);
71 void g_mime_header_iter_free (GMimeHeaderIter *iter);
72
73 GMimeHeaderIter *g_mime_header_iter_copy (GMimeHeaderIter *iter);
74 void g_mime_header_iter_copy_to (GMimeHeaderIter *src, GMimeHeaderIter *dest);
75
76 gboolean g_mime_header_iter_equal (GMimeHeaderIter *iter1, GMimeHeaderIter *iter2);
77
78 gboolean g_mime_header_iter_is_valid (GMimeHeaderIter *iter);
79
80 gboolean g_mime_header_iter_first (GMimeHeaderIter *iter);
81 gboolean g_mime_header_iter_last (GMimeHeaderIter *iter);
82
83 gboolean g_mime_header_iter_next (GMimeHeaderIter *iter);
84 gboolean g_mime_header_iter_prev (GMimeHeaderIter *iter);
85
86 /*gint64 g_mime_header_iter_get_offset (GMimeHeaderIter *iter);*/
87 const char *g_mime_header_iter_get_name (GMimeHeaderIter *iter);
88 gboolean g_mime_header_iter_set_value (GMimeHeaderIter *iter, const char *value);
89 const char *g_mime_header_iter_get_value (GMimeHeaderIter *iter);
90
91 gboolean g_mime_header_iter_remove (GMimeHeaderIter *iter);
92
93
94 /**
95  * GMimeHeaderWriter:
96  * @stream: The output stream.
97  * @name: The field name.
98  * @value: The field value.
99  *
100  * Function signature for the callback to
101  * g_mime_header_list_register_writer().
102  *
103  * Returns: the number of bytes written or %-1 on error.
104  **/
105 typedef ssize_t (* GMimeHeaderWriter) (GMimeStream *stream, const char *name, const char *value);
106
107
108 GMimeHeaderList *g_mime_header_list_new (void);
109
110 void g_mime_header_list_destroy (GMimeHeaderList *headers);
111
112 void g_mime_header_list_set_stream (GMimeHeaderList *headers, GMimeStream *stream);
113 GMimeStream *g_mime_header_list_get_stream (GMimeHeaderList *headers);
114
115 void g_mime_header_list_clear (GMimeHeaderList *headers);
116 gboolean g_mime_header_list_contains (const GMimeHeaderList *headers, const char *name);
117 void g_mime_header_list_prepend (GMimeHeaderList *headers, const char *name, const char *value);
118 void g_mime_header_list_append (GMimeHeaderList *headers, const char *name, const char *value);
119 void g_mime_header_list_set (GMimeHeaderList *headers, const char *name, const char *value);
120 const char *g_mime_header_list_get (const GMimeHeaderList *headers, const char *name);
121 gboolean g_mime_header_list_remove (GMimeHeaderList *headers, const char *name);
122
123 gboolean g_mime_header_list_get_iter (GMimeHeaderList *headers, GMimeHeaderIter *iter);
124
125 void g_mime_header_list_foreach (const GMimeHeaderList *headers, GMimeHeaderForeachFunc func, gpointer user_data);
126
127 void g_mime_header_list_register_writer (GMimeHeaderList *headers, const char *name, GMimeHeaderWriter writer);
128 ssize_t g_mime_header_list_write_to_stream (const GMimeHeaderList *headers, GMimeStream *stream);
129 char *g_mime_header_list_to_string (const GMimeHeaderList *headers);
130
131 G_END_DECLS
132
133 #endif /* __GMIME_HEADER_H__ */