Initialize the gmime for upstream
[platform/upstream/gmime.git] / gmime / internet-address.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 __INTERNET_ADDRESS_H__
23 #define __INTERNET_ADDRESS_H__
24
25 #include <glib.h>
26 #include <glib-object.h>
27
28 G_BEGIN_DECLS
29
30 #define INTERNET_ADDRESS_TYPE                  (internet_address_get_type ())
31 #define INTERNET_ADDRESS(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), internet_address_get_type (), InternetAddress))
32 #define INTERNET_ADDRESS_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), internet_address_get_type (), InternetAddressClass))
33 #define IS_INTERNET_ADDRESS(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), internet_address_get_type ()))
34 #define IS_INTERNET_ADDRESS_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), internet_address_get_type ()))
35 #define INTERNET_ADDRESS_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), internet_address_get_type (), InternetAddressClass))
36
37 #define INTERNET_ADDRESS_TYPE_GROUP            (internet_address_group_get_type ())
38 #define INTERNET_ADDRESS_GROUP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), INTERNET_ADDRESS_TYPE_GROUP, InternetAddressGroup))
39 #define INTERNET_ADDRESS_GROUP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), INTERNET_ADDRESS_TYPE_GROUP, InternetAddressGroupClass))
40 #define INTERNET_ADDRESS_IS_GROUP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INTERNET_ADDRESS_TYPE_GROUP))
41 #define INTERNET_ADDRESS_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INTERNET_ADDRESS_TYPE_GROUP))
42
43 #define INTERNET_ADDRESS_TYPE_MAILBOX          (internet_address_mailbox_get_type ())
44 #define INTERNET_ADDRESS_MAILBOX(obj)          (G_TYPE_CHECK_INSTANCE_CAST ((obj), INTERNET_ADDRESS_TYPE_MAILBOX, InternetAddressMailbox))
45 #define INTERNET_ADDRESS_MAILBOX_CLASS(klass)  (G_TYPE_CHECK_CLASS_CAST ((klass), INTERNET_ADDRESS_TYPE_MAILBOX, InternetAddressMailboxClass))
46 #define INTERNET_ADDRESS_IS_MAILBOX(obj)       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INTERNET_ADDRESS_TYPE_MAILBOX))
47 #define INTERNET_ADDRESS_IS_MAILBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INTERNET_ADDRESS_TYPE_MAILBOX))
48
49 #define INTERNET_ADDRESS_LIST_TYPE             (internet_address_list_get_type ())
50 #define INTERNET_ADDRESS_LIST(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), INTERNET_ADDRESS_LIST_TYPE, InternetAddressList))
51 #define INTERNET_ADDRESS_LIST_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), INTERNET_ADDRESS_LIST_TYPE, InternetAddressListClass))
52 #define IS_INTERNET_ADDRESS_LIST(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INTERNET_ADDRESS_LIST_TYPE))
53 #define IS_INTERNET_ADDRESS_LIST_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), INTERNET_ADDRESS_LIST_TYPE))
54
55
56 typedef struct _InternetAddress InternetAddress;
57 typedef struct _InternetAddressClass InternetAddressClass;
58
59 typedef struct _InternetAddressGroup InternetAddressGroup;
60 typedef struct _InternetAddressGroupClass InternetAddressGroupClass;
61
62 typedef struct _InternetAddressMailbox InternetAddressMailbox;
63 typedef struct _InternetAddressMailboxClass InternetAddressMailboxClass;
64
65 typedef struct _InternetAddressList InternetAddressList;
66 typedef struct _InternetAddressListClass InternetAddressListClass;
67
68
69 /**
70  * InternetAddress:
71  * @parent_object: parent #GObject
72  * @priv: private data
73  * @name: display name
74  *
75  * An RFC 2822 Address object.
76  **/
77 struct _InternetAddress {
78         GObject parent_object;
79         gpointer priv;
80         
81         char *name;
82 };
83
84 struct _InternetAddressClass {
85         GObjectClass parent_class;
86         
87         /* public virtual methods */
88         void (* to_string) (InternetAddress *ia, guint32 flags, size_t *linelen, GString *out);
89 };
90
91
92 GType internet_address_get_type (void);
93
94 void internet_address_set_name (InternetAddress *ia, const char *name);
95 const char *internet_address_get_name (InternetAddress *ia);
96
97 char *internet_address_to_string (InternetAddress *ia, gboolean encode);
98
99
100 /**
101  * InternetAddressMailbox:
102  * @parent_object: parent #InternetAddress
103  * @addr: address string
104  *
105  * An RFC 2822 Mailbox address.
106  **/
107 struct _InternetAddressMailbox {
108         InternetAddress parent_object;
109         
110         char *addr;
111 };
112
113 struct _InternetAddressMailboxClass {
114         InternetAddressClass parent_class;
115         
116 };
117
118
119 GType internet_address_mailbox_get_type (void);
120
121 InternetAddress *internet_address_mailbox_new (const char *name, const char *addr);
122
123 void internet_address_mailbox_set_addr (InternetAddressMailbox *mailbox, const char *addr);
124 const char *internet_address_mailbox_get_addr (InternetAddressMailbox *mailbox);
125
126
127 /**
128  * InternetAddressGroup:
129  * @parent_object: parent #InternetAddress
130  * @members: a #InternetAddressList of group members
131  *
132  * An RFC 2822 Group address.
133  **/
134 struct _InternetAddressGroup {
135         InternetAddress parent_object;
136         
137         InternetAddressList *members;
138 };
139
140 struct _InternetAddressGroupClass {
141         InternetAddressClass parent_class;
142         
143 };
144
145
146 GType internet_address_group_get_type (void);
147
148 InternetAddress *internet_address_group_new (const char *name);
149
150 void internet_address_group_set_members (InternetAddressGroup *group, InternetAddressList *members);
151 InternetAddressList *internet_address_group_get_members (InternetAddressGroup *group);
152
153 int internet_address_group_add_member (InternetAddressGroup *group, InternetAddress *member);
154
155
156 /**
157  * InternetAddressList:
158  * @parent_object: parent #GObject
159  * @priv: private data
160  * @array: The array of #InternetAddress objects.
161  *
162  * A collection of #InternetAddress objects.
163  **/
164 struct _InternetAddressList {
165         GObject parent_object;
166         gpointer priv;
167         
168         GPtrArray *array;
169 };
170
171 struct _InternetAddressListClass {
172         GObjectClass parent_class;
173         
174 };
175
176
177 GType internet_address_list_get_type (void);
178
179 InternetAddressList *internet_address_list_new (void);
180
181 int internet_address_list_length (InternetAddressList *list);
182
183 void internet_address_list_clear (InternetAddressList *list);
184
185 int internet_address_list_add (InternetAddressList *list, InternetAddress *ia);
186 void internet_address_list_prepend (InternetAddressList *list, InternetAddressList *prepend);
187 void internet_address_list_append (InternetAddressList *list, InternetAddressList *append);
188 void internet_address_list_insert (InternetAddressList *list, int index, InternetAddress *ia);
189 gboolean internet_address_list_remove (InternetAddressList *list, InternetAddress *ia);
190 gboolean internet_address_list_remove_at (InternetAddressList *list, int index);
191
192 gboolean internet_address_list_contains (InternetAddressList *list, InternetAddress *ia);
193 int internet_address_list_index_of (InternetAddressList *list, InternetAddress *ia);
194
195 InternetAddress *internet_address_list_get_address (InternetAddressList *list, int index);
196 void internet_address_list_set_address (InternetAddressList *list, int index, InternetAddress *ia);
197
198 char *internet_address_list_to_string (InternetAddressList *list, gboolean encode);
199
200 InternetAddressList *internet_address_list_parse_string (const char *str);
201
202 void internet_address_list_writer (InternetAddressList *list, GString *str);
203
204 G_END_DECLS
205
206 #endif /* __INTERNET_ADDRESS_H__ */