1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Copyright (C) 2000-2012 Jeffrey Stedfast
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.
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.
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
22 #ifndef __INTERNET_ADDRESS_H__
23 #define __INTERNET_ADDRESS_H__
26 #include <glib-object.h>
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))
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))
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))
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))
56 typedef struct _InternetAddress InternetAddress;
57 typedef struct _InternetAddressClass InternetAddressClass;
59 typedef struct _InternetAddressGroup InternetAddressGroup;
60 typedef struct _InternetAddressGroupClass InternetAddressGroupClass;
62 typedef struct _InternetAddressMailbox InternetAddressMailbox;
63 typedef struct _InternetAddressMailboxClass InternetAddressMailboxClass;
65 typedef struct _InternetAddressList InternetAddressList;
66 typedef struct _InternetAddressListClass InternetAddressListClass;
71 * @parent_object: parent #GObject
75 * An RFC 2822 Address object.
77 struct _InternetAddress {
78 GObject parent_object;
84 struct _InternetAddressClass {
85 GObjectClass parent_class;
87 /* public virtual methods */
88 void (* to_string) (InternetAddress *ia, guint32 flags, size_t *linelen, GString *out);
92 GType internet_address_get_type (void);
94 void internet_address_set_name (InternetAddress *ia, const char *name);
95 const char *internet_address_get_name (InternetAddress *ia);
97 char *internet_address_to_string (InternetAddress *ia, gboolean encode);
101 * InternetAddressMailbox:
102 * @parent_object: parent #InternetAddress
103 * @addr: address string
105 * An RFC 2822 Mailbox address.
107 struct _InternetAddressMailbox {
108 InternetAddress parent_object;
113 struct _InternetAddressMailboxClass {
114 InternetAddressClass parent_class;
119 GType internet_address_mailbox_get_type (void);
121 InternetAddress *internet_address_mailbox_new (const char *name, const char *addr);
123 void internet_address_mailbox_set_addr (InternetAddressMailbox *mailbox, const char *addr);
124 const char *internet_address_mailbox_get_addr (InternetAddressMailbox *mailbox);
128 * InternetAddressGroup:
129 * @parent_object: parent #InternetAddress
130 * @members: a #InternetAddressList of group members
132 * An RFC 2822 Group address.
134 struct _InternetAddressGroup {
135 InternetAddress parent_object;
137 InternetAddressList *members;
140 struct _InternetAddressGroupClass {
141 InternetAddressClass parent_class;
146 GType internet_address_group_get_type (void);
148 InternetAddress *internet_address_group_new (const char *name);
150 void internet_address_group_set_members (InternetAddressGroup *group, InternetAddressList *members);
151 InternetAddressList *internet_address_group_get_members (InternetAddressGroup *group);
153 int internet_address_group_add_member (InternetAddressGroup *group, InternetAddress *member);
157 * InternetAddressList:
158 * @parent_object: parent #GObject
159 * @priv: private data
160 * @array: The array of #InternetAddress objects.
162 * A collection of #InternetAddress objects.
164 struct _InternetAddressList {
165 GObject parent_object;
171 struct _InternetAddressListClass {
172 GObjectClass parent_class;
177 GType internet_address_list_get_type (void);
179 InternetAddressList *internet_address_list_new (void);
181 int internet_address_list_length (InternetAddressList *list);
183 void internet_address_list_clear (InternetAddressList *list);
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);
192 gboolean internet_address_list_contains (InternetAddressList *list, InternetAddress *ia);
193 int internet_address_list_index_of (InternetAddressList *list, InternetAddress *ia);
195 InternetAddress *internet_address_list_get_address (InternetAddressList *list, int index);
196 void internet_address_list_set_address (InternetAddressList *list, int index, InternetAddress *ia);
198 char *internet_address_list_to_string (InternetAddressList *list, gboolean encode);
200 InternetAddressList *internet_address_list_parse_string (const char *str);
202 void internet_address_list_writer (InternetAddressList *list, GString *str);
206 #endif /* __INTERNET_ADDRESS_H__ */