## InternetAddress InternetAddress — Internet addresses |

## Synopsis

    enum                InternetAddressType;
                        InternetAddressList;
                        InternetAddress;
    InternetAddress*    internet_address_new                (void);
    InternetAddress*    internet_address_new_name           (const char *name,
                                                             const char *addr);
    InternetAddress*    internet_address_new_group          (const char *name);
    void                internet_address_ref                (InternetAddress *ia);
    void                internet_address_unref              (InternetAddress *ia);
    InternetAddressType internet_address_get_type           (InternetAddress *ia);
    const char*         internet_address_get_name           (InternetAddress *ia);
    void                internet_address_set_name           (InternetAddress *ia,
                                                             const char *name);
    const char*         internet_address_get_addr           (InternetAddress *ia);
    void                internet_address_set_addr           (InternetAddress *ia,
                                                             const char *addr);
    void                internet_address_set_group          (InternetAddress *ia,
                                                             InternetAddressList *group);
    void                internet_address_add_member         (InternetAddress *ia,
                                                             InternetAddress *member);
    const InternetAddressList* internet_address_get_members (InternetAddress *ia);
    InternetAddressList* internet_address_list_prepend      (InternetAddressList *list,
                                                             InternetAddress *ia);
    InternetAddressList* internet_address_list_append       (InternetAddressList *list,
                                                             InternetAddress *ia);
    InternetAddressList* internet_address_list_concat       (InternetAddressList *a,
                                                             InternetAddressList *b);
    int                 internet_address_list_length        (const InternetAddressList *list);
    void                internet_address_list_destroy       (InternetAddressList *list);
    InternetAddressList* internet_address_list_next         (const InternetAddressList *list);
    InternetAddress*    internet_address_list_get_address   (const InternetAddressList *list);
    InternetAddressList* internet_address_parse_string      (const char *string);
    char*               internet_address_to_string          (const InternetAddress *ia,
                                                             gboolean encode);
    char*               internet_address_list_to_string     (const InternetAddressList *list,
                                                             gboolean encode);
    void                internet_address_list_writer        (const InternetAddressList *list,
                                                             GString *str);

## Description

An InternetAddress represents what is commonly referred to as an E-Mail address.

## Details

### enum InternetAddressType

    typedef enum {
    	INTERNET_ADDRESS_NONE,
    	INTERNET_ADDRESS_NAME,
    	INTERNET_ADDRESS_GROUP
    } InternetAddressType;

The type of InternetAddress.

`INTERNET_ADDRESS_NONE` | No type.
`INTERNET_ADDRESS_NAME` | A typical internet address type.
`INTERNET_ADDRESS_GROUP` | An rfc822 group type address.

### InternetAddressList

    typedef struct {
    	struct _InternetAddressList *next;
    	InternetAddress *address;
    } InternetAddressList;

A list of InternetAddress structures.

struct _InternetAddressList *`next`; | Pointer to the next item in the list.
InternetAddress *`address`; | The InternetAddress.

### InternetAddress

    typedef struct {
    	InternetAddressType type;
    	unsigned int refcount;
    	char *name;
    	union {
    		char *addr;
    		InternetAddressList *members;
    	} value;
    } InternetAddress;

A structure representing an rfc822 address.

InternetAddressType `type`; | The type of internet address.
unsigned int `refcount`; | The reference count.
char *`name`; | The name component of the internet address.

### internet_address_new ()

    InternetAddress*    internet_address_new                (void);

Creates a new InternetAddress object

Returns : | a new InternetAddress object.

### internet_address_new_name ()

    InternetAddress*    internet_address_new_name           (const char *name,
                                                             const char *addr);

Creates a new InternetAddress object with name `name` and address `addr`.

`name` : | person's name
`addr` : | person's address
Returns : | a new InternetAddress object.

### internet_address_new_group ()

    InternetAddress*    internet_address_new_group          (const char *name);

Creates a new InternetAddress object with group name `name`.

`name` : | group name
Returns : | a new InternetAddress object.

### internet_address_ref ()

    void                internet_address_ref                (InternetAddress *ia);

Ref's the internet address.

`ia` : | internet address

### internet_address_unref ()

    void                internet_address_unref              (InternetAddress *ia);

Unref's the internet address.

`ia` : | internet address

### internet_address_get_type ()

    InternetAddressType internet_address_get_type           (InternetAddress *ia);

Gets the type of the internet address, which will either be INTERNET_ADDRESS_NAME or INTERNET_ADDRESS_GROUP.

`ia` : | internet address
Returns : | the type of `ia`.

### internet_address_get_name ()

    const char*         internet_address_get_name           (InternetAddress *ia);

Gets the name component of the internet address. If the internet address is a group, it will get the group name.

`ia` : | internet address
Returns : | the name of `ia`.

### internet_address_set_name ()

    void                internet_address_set_name           (InternetAddress *ia,
                                                             const char *name);

Set the name of the internet address.

`ia` : | internet address
`name` : | group or contact's name

### internet_address_get_addr ()

    const char*         internet_address_get_addr           (InternetAddress *ia);

Gets the addr-spec of the internet address.

`ia` : | internet address
Returns : | the address of `ia`.

### internet_address_set_addr ()

    void                internet_address_set_addr           (InternetAddress *ia,
                                                             const char *addr);

Set the internet address's address.

`ia` : | internet address
`addr` : | contact's email address

### internet_address_set_group ()

    void                internet_address_set_group          (InternetAddress *ia,
                                                             InternetAddressList *group);

Set the members of the internet address group.

`ia` : | internet address
`group` : | a list of internet addresses

### internet_address_add_member ()

    void                internet_address_add_member         (InternetAddress *ia,
                                                             InternetAddress *member);

Add a contact to the internet address group.

`ia` : | internet address
`member` : | group member's internet address

### internet_address_get_members ()

    const InternetAddressList* internet_address_get_members (InternetAddress *ia);

Gets the InternetAddressList containing the group members of an rfc822 group address.

`ia` : | internet address
Returns : | the members of `ia`.

### internet_address_list_prepend ()

    InternetAddressList* internet_address_list_prepend      (InternetAddressList *list,
                                                             InternetAddress *ia);

Prepends the internet address `ia` to the list of internet addresses pointed to by `list`.

`list` : | a list of internet addresses
`ia` : | internet address to prepend
Returns : | the resultant list.

### internet_address_list_append ()

    InternetAddressList* internet_address_list_append       (InternetAddressList *list,
                                                             InternetAddress *ia);

Appends the internet address to the list of internet addresses pointed to by `list`.

`list` : | a list of internet addresses
`ia` : | internet address to append
Returns : | the resultant list.

### internet_address_list_concat ()

    InternetAddressList* internet_address_list_concat       (InternetAddressList *a,
                                                             InternetAddressList *b);

Concatenates a copy of list `b` onto the end of list `a`.

`a` : | first list
`b` : | second list
Returns : | the resulting list.

### internet_address_list_length ()

    int                 internet_address_list_length        (const InternetAddressList *list);

Calculates the length of the list of addresses.

`list` : | list of internet addresses
Returns : | the number of internet addresses in `list`.

### internet_address_list_destroy ()

    void                internet_address_list_destroy       (InternetAddressList *list);

Destroys the list of internet addresses.

`list` : | address list

### internet_address_list_next ()

    InternetAddressList* internet_address_list_next         (const InternetAddressList *list);

Advances to the next address node in the InternetAddessList.

`list` : | list of internet addresses
Returns : | the next address node in the InternetAddessList.

### internet_address_list_get_address ()

    InternetAddress*    internet_address_list_get_address   (const InternetAddressList *list);

Gets the InternetAddress currently pointed to in `list`.

`list` : | list of internet addresses
Returns : | the InternetAddress currently pointed to in `list`.

### internet_address_parse_string ()

    InternetAddressList* internet_address_parse_string      (const char *string);

Construct a list of internet addresses from the given string.

`string` : | a string containing internet addresses
Returns : | a linked list of internet addresses. *Must* be free'd by the caller.

### internet_address_to_string ()

    char*               internet_address_to_string          (const InternetAddress *ia,
                                                             gboolean encode);

Allocates a string containing the contents of the InternetAddress object.

`ia` : | Internet Address object
`encode` : | TRUE if the address should be rfc2047 encoded
Returns : | the InternetAddress object as an allocated string in rfc822 format.

### internet_address_list_to_string ()

    char*               internet_address_list_to_string     (const InternetAddressList *list,
                                                             gboolean encode);

Allocates a string buffer containing the rfc822 formatted addresses in `list`.

`list` : | list of internet addresses
`encode` : | `TRUE` if the address should be rfc2047 encoded
Returns : | a string containing the list of addresses in rfc822 format.

### internet_address_list_writer ()

    void                internet_address_list_writer        (const InternetAddressList *list,
                                                             GString *str);

Writes the rfc2047-encoded rfc822 formatted addresses in `list` to `string`, folding appropriately.

`list` : | list of internet addresses
`str` : | string to write to