## EVCard

EVCard

## Synopsis

    #define             EVC_ADR
    #define             EVC_BDAY
    #define             EVC_CALURI
    #define             EVC_CATEGORIES
    #define             EVC_EMAIL
    #define             EVC_ENCODING
    #define             EVC_FBURL
    #define             EVC_FN
    #define             EVC_GEO
    #define             EVC_ICSCALENDAR
    #define             EVC_KEY
    #define             EVC_LABEL
    #define             EVC_LOGO
    #define             EVC_MAILER
    #define             EVC_NICKNAME
    #define             EVC_N
    #define             EVC_NOTE
    #define             EVC_ORG
    #define             EVC_PHOTO
    #define             EVC_PRODID
    #define             EVC_QUOTEDPRINTABLE
    #define             EVC_REV
    #define             EVC_ROLE
    #define             EVC_TEL
    #define             EVC_TITLE
    #define             EVC_TYPE
    #define             EVC_UID
    #define             EVC_URL
    #define             EVC_VALUE
    #define             EVC_VERSION
    #define             EVC_X_AIM
    #define             EVC_X_ANNIVERSARY
    #define             EVC_X_ASSISTANT
    #define             EVC_X_BIRTHDAY
    #define             EVC_X_BLOG_URL
    #define             EVC_X_CALLBACK
    #define             EVC_X_COMPANY
    #define             EVC_X_DEST_CONTACT_UID
    #define             EVC_X_DEST_EMAIL_NUM
    #define             EVC_X_DEST_HTML_MAIL
    #define             EVC_X_DEST_SOURCE_UID
    #define             EVC_X_E164
    #define             EVC_X_FILE_AS
    #define             EVC_X_GADUGADU
    #define             EVC_X_GROUPWISE
    #define             EVC_X_ICQ
    #define             EVC_X_JABBER
    #define             EVC_X_LIST_SHOW_ADDRESSES
    #define             EVC_X_LIST
    #define             EVC_X_LIST_NAME
    #define             EVC_X_MANAGER
    #define             EVC_X_MSN
    #define             EVC_X_RADIO
    #define             EVC_X_SKYPE
    #define             EVC_X_GOOGLE_TALK
    #define             EVC_X_TWITTER
    #define             EVC_X_SIP
    #define             EVC_X_SPOUSE
    #define             EVC_X_TELEX
    #define             EVC_X_TTYTDD
    #define             EVC_X_VIDEO_URL
    #define             EVC_X_WANTS_HTML
    #define             EVC_X_YAHOO
    #define             EVC_X_BOOK_UID
    #define             EVC_CONTACT_LIST
    #define             EVC_PARENT_CL
    #define             EVC_CL_UID
    #define             EVC_X_DEST_EMAIL
    #define             EVC_X_DEST_NAME
    enum                EVCardFormat;
    #define             E_TYPE_VCARD_PARAM_ATTRIBUTE
    #define             E_VCARD_21_VALID_PROPERTIES
    #define             E_VCARD_21_VALID_PARAMETERS
    struct              EVCard;
    void                e_vcard_construct                   (EVCard *evc,
                                                             const gchar *str);
    void                e_vcard_construct_with_uid          (EVCard *evc,
                                                             const gchar *str,
                                                             const gchar *uid);
    EVCard *            e_vcard_new                         (void);
    EVCard *            e_vcard_new_from_string             (const gchar *str);
    gboolean            e_vcard_is_parsed                   (EVCard *evc);
    gchar *             e_vcard_to_string                   (EVCard *evc,
                                                             EVCardFormat format);
    void                e_vcard_dump_structure              (EVCard *evc);
    EVCardAttribute *   e_vcard_attribute_new               (const gchar *attr_group,
                                                             const gchar *attr_name);
    void                e_vcard_attribute_free              (EVCardAttribute *attr);
    EVCardAttribute *   e_vcard_attribute_copy              (EVCardAttribute *attr);
    void                e_vcard_remove_attributes           (EVCard *evc,
                                                             const gchar *attr_group,
                                                             const gchar *attr_name);
    void                e_vcard_remove_attribute            (EVCard *evc,
                                                             EVCardAttribute *attr);
    void                e_vcard_append_attribute            (EVCard *evc,
                                                             EVCardAttribute *attr);
    void                e_vcard_append_attribute_with_value (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             const gchar *value);
    void                e_vcard_append_attribute_with_values
                                                            (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             ...);
    void                e_vcard_add_attribute               (EVCard *evc,
                                                             EVCardAttribute *attr);
    void                e_vcard_add_attribute_with_value    (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             const gchar *value);
    void                e_vcard_add_attribute_with_values   (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             ...);
    void                e_vcard_attribute_add_value         (EVCardAttribute *attr,
                                                             const gchar *value);
    void                e_vcard_attribute_add_value_decoded (EVCardAttribute *attr,
                                                             const gchar *value,
                                                             gint len);
    void                e_vcard_attribute_add_values        (EVCardAttribute *attr,
                                                             ...);
    void                e_vcard_attribute_remove_value      (EVCardAttribute *attr,
                                                             const gchar *s);
    void                e_vcard_attribute_remove_values     (EVCardAttribute *attr);
    void                e_vcard_attribute_remove_params     (EVCardAttribute *attr);
    void                e_vcard_attribute_remove_param      (EVCardAttribute *attr,
                                                             const gchar *param_name);
    void                e_vcard_attribute_remove_param_value
                                                            (EVCardAttribute *attr,
                                                             const gchar *param_name,
                                                             const gchar *s);
    EVCardAttributeParam * e_vcard_attribute_param_new      (const gchar *name);
    void                e_vcard_attribute_param_free        (EVCardAttributeParam *param);
    EVCardAttributeParam * e_vcard_attribute_param_copy     (EVCardAttributeParam *param);
    void                e_vcard_attribute_add_param         (EVCardAttribute *attr,
                                                             EVCardAttributeParam *param);
    void                e_vcard_attribute_add_param_with_value
                                                            (EVCardAttribute *attr,
                                                             EVCardAttributeParam *param,
                                                             const gchar *value);
    void                e_vcard_attribute_add_param_with_values
                                                            (EVCardAttribute *attr,
                                                             EVCardAttributeParam *param,
                                                             ...);
    void                e_vcard_attribute_param_add_value   (EVCardAttributeParam *param,
                                                             const gchar *value);
    void                e_vcard_attribute_param_add_values  (EVCardAttributeParam *param,
                                                             ...);
    void                e_vcard_attribute_param_remove_values
                                                            (EVCardAttributeParam *param);
    EVCardAttribute *   e_vcard_get_attribute               (EVCard *evc,
                                                             const gchar *name);
    EVCardAttribute *   e_vcard_get_attribute_if_parsed     (EVCard *evc,
                                                             const gchar *name);
    GList *             e_vcard_get_attributes              (EVCard *evcard);
    const gchar *       e_vcard_attribute_get_group         (EVCardAttribute *attr);
    const gchar *       e_vcard_attribute_get_name          (EVCardAttribute *attr);
    GList *             e_vcard_attribute_get_values        (EVCardAttribute *attr);
    GList *             e_vcard_attribute_get_values_decoded
                                                            (EVCardAttribute *attr);
    gboolean            e_vcard_attribute_is_single_valued  (EVCardAttribute *attr);
    gchar *             e_vcard_attribute_get_value         (EVCardAttribute *attr);
    GString *           e_vcard_attribute_get_value_decoded (EVCardAttribute *attr);
    GList *             e_vcard_attribute_get_params        (EVCardAttribute *attr);
    GList *             e_vcard_attribute_get_param         (EVCardAttribute *attr,
                                                             const gchar *name);
    const gchar *       e_vcard_attribute_param_get_name    (EVCardAttributeParam *param);
    GList *             e_vcard_attribute_param_get_values  (EVCardAttributeParam *param);
    gboolean            e_vcard_attribute_has_type          (EVCardAttribute *attr,
                                                             const gchar *typestr);
    gchar *             e_vcard_escape_string               (const gchar *s);
    gchar *             e_vcard_unescape_string             (const gchar *s);
                        EVCardAttribute;
                        EVCardAttributeParam;

## Object Hierarchy

      GObject
       +----EVCard
             +----EContact

      GBoxed
       +----EVCardAttribute

      GBoxed
       +----EVCardAttributeParam

## Description

## Details

### EVC_ADR

    #define EVC_ADR				"ADR"

### EVC_BDAY

    #define EVC_BDAY			"BDAY"

### EVC_CALURI

    #define EVC_CALURI			"CALURI"

### EVC_CATEGORIES

    #define EVC_CATEGORIES			"CATEGORIES"

### EVC_EMAIL

    #define EVC_EMAIL			"EMAIL"

### EVC_ENCODING

    #define EVC_ENCODING			"ENCODING"

### EVC_FBURL

    #define EVC_FBURL			"FBURL"

### EVC_FN

    #define EVC_FN				"FN"

### EVC_GEO

    #define EVC_GEO				"GEO"

Since 1.12

### EVC_ICSCALENDAR

    #define EVC_ICSCALENDAR			"ICSCALENDAR"

### EVC_KEY

    #define EVC_KEY				"KEY"

### EVC_LABEL

    #define EVC_LABEL			"LABEL"

### EVC_LOGO

    #define EVC_LOGO			"LOGO"

### EVC_MAILER

    #define EVC_MAILER			"MAILER"

### EVC_NICKNAME

    #define EVC_NICKNAME			"NICKNAME"

### EVC_N

    #define EVC_N				"N"

### EVC_NOTE

    #define EVC_NOTE			"NOTE"

### EVC_ORG

    #define EVC_ORG				"ORG"

### EVC_PHOTO

    #define EVC_PHOTO			"PHOTO"

### EVC_PRODID

    #define EVC_PRODID			"PRODID"

### EVC_QUOTEDPRINTABLE

    #define EVC_QUOTEDPRINTABLE		"QUOTED-PRINTABLE"

### EVC_REV

    #define EVC_REV				"REV"

### EVC_ROLE

    #define EVC_ROLE			"ROLE"

### EVC_TEL

    #define EVC_TEL				"TEL"

### EVC_TITLE

    #define EVC_TITLE			"TITLE"

### EVC_TYPE

    #define EVC_TYPE			"TYPE"

### EVC_UID

    #define EVC_UID				"UID"

### EVC_URL

    #define EVC_URL				"URL"

### EVC_VALUE

    #define EVC_VALUE			"VALUE"

### EVC_VERSION

    #define EVC_VERSION			"VERSION"

### EVC_X_AIM

    #define EVC_X_AIM			"X-AIM"

### EVC_X_ANNIVERSARY

    #define EVC_X_ANNIVERSARY		"X-EVOLUTION-ANNIVERSARY"

### EVC_X_ASSISTANT

    #define EVC_X_ASSISTANT			"X-EVOLUTION-ASSISTANT"

### EVC_X_BIRTHDAY

    #define EVC_X_BIRTHDAY			"X-EVOLUTION-BIRTHDAY"

### EVC_X_BLOG_URL

    #define EVC_X_BLOG_URL			"X-EVOLUTION-BLOG-URL"

### EVC_X_CALLBACK

    #define EVC_X_CALLBACK			"X-EVOLUTION-CALLBACK"

### EVC_X_COMPANY

    #define EVC_X_COMPANY			"X-EVOLUTION-COMPANY"

### EVC_X_DEST_CONTACT_UID

    #define EVC_X_DEST_CONTACT_UID		"X-EVOLUTION-DEST-CONTACT-UID"

### EVC_X_DEST_EMAIL_NUM

    #define EVC_X_DEST_EMAIL_NUM		"X-EVOLUTION-DEST-EMAIL-NUM"

### EVC_X_DEST_HTML_MAIL

    #define EVC_X_DEST_HTML_MAIL		"X-EVOLUTION-DEST-HTML-MAIL"

### EVC_X_DEST_SOURCE_UID

    #define EVC_X_DEST_SOURCE_UID		"X-EVOLUTION-DEST-SOURCE-UID"

### EVC_X_E164

    #define EVC_X_E164			"X-EVOLUTION-E164"

### EVC_X_FILE_AS

    #define EVC_X_FILE_AS			"X-EVOLUTION-FILE-AS"

### EVC_X_GADUGADU

    #define EVC_X_GADUGADU			"X-GADUGADU"

### EVC_X_GROUPWISE

    #define EVC_X_GROUPWISE			"X-GROUPWISE"

### EVC_X_ICQ

    #define EVC_X_ICQ			"X-ICQ"

### EVC_X_JABBER

    #define EVC_X_JABBER			"X-JABBER"

### EVC_X_LIST_SHOW_ADDRESSES

    #define EVC_X_LIST_SHOW_ADDRESSES "X-EVOLUTION-LIST-SHOW-ADDRESSES"

### EVC_X_LIST

    #define EVC_X_LIST			"X-EVOLUTION-LIST"

### EVC_X_LIST_NAME

    #define EVC_X_LIST_NAME			"X-EVOLUTION-LIST-NAME"

Since 3.2

### EVC_X_MANAGER

    #define EVC_X_MANAGER			"X-EVOLUTION-MANAGER"

### EVC_X_MSN

    #define EVC_X_MSN			"X-MSN"

### EVC_X_RADIO

    #define EVC_X_RADIO			"X-EVOLUTION-RADIO"

### EVC_X_SKYPE

    #define EVC_X_SKYPE			"X-SKYPE"

Since 2.26

### EVC_X_GOOGLE_TALK

    #define EVC_X_GOOGLE_TALK		"X-GOOGLE-TALK"

Since 3.2

### EVC_X_TWITTER

    #define EVC_X_TWITTER			"X-TWITTER"

Twitter name(s).

Since 3.6

### EVC_X_SIP

    #define EVC_X_SIP			"X-SIP"

Since 2.26

### EVC_X_SPOUSE

    #define EVC_X_SPOUSE			"X-EVOLUTION-SPOUSE"

### EVC_X_TELEX

    #define EVC_X_TELEX			"X-EVOLUTION-TELEX"

### EVC_X_TTYTDD

    #define EVC_X_TTYTDD			"X-EVOLUTION-TTYTDD"

### EVC_X_VIDEO_URL

    #define EVC_X_VIDEO_URL			"X-EVOLUTION-VIDEO-URL"

### EVC_X_WANTS_HTML

    #define EVC_X_WANTS_HTML		"X-MOZILLA-HTML"

### EVC_X_YAHOO

    #define EVC_X_YAHOO			"X-YAHOO"

### EVC_X_BOOK_UID

    #define EVC_X_BOOK_UID			"X-EVOLUTION-BOOK-UID"

Since 3.6

### EVC_CONTACT_LIST

    #define EVC_CONTACT_LIST		"X-EVOLUTION-CONTACT-LIST-INFO"

Since 3.2

### EVC_PARENT_CL

    #define EVC_PARENT_CL			"X-EVOLUTION-PARENT-UID"

Since 3.2

### EVC_CL_UID

    #define EVC_CL_UID			"X-EVOLUTION-CONTACT-LIST-UID"

Since 3.2

### EVC_X_DEST_EMAIL

    #define EVC_X_DEST_EMAIL		"X-EVOLUTION-DEST-EMAIL"

### Warning

`EVC_X_DEST_EMAIL` is deprecated and should not be used in newly-written code.

### EVC_X_DEST_NAME

    #define EVC_X_DEST_NAME			"X-EVOLUTION-DEST-NAME"

### Warning

`EVC_X_DEST_NAME` is deprecated and should not be used in newly-written code.

### enum EVCardFormat

    typedef enum {
    	EVC_FORMAT_VCARD_21,
    	EVC_FORMAT_VCARD_30
    } EVCardFormat;

### E_TYPE_VCARD_PARAM_ATTRIBUTE

    #define E_TYPE_VCARD_PARAM_ATTRIBUTE  (e_vcard_attribute_param_get_type ())

### E_VCARD_21_VALID_PROPERTIES

    #define             E_VCARD_21_VALID_PROPERTIES

FIXME: Document me!

Since 3.4

### E_VCARD_21_VALID_PARAMETERS

    #define             E_VCARD_21_VALID_PARAMETERS

FIXME: Document me!

Since 3.4

### struct EVCard

    struct EVCard;

### e_vcard_construct ()

    void                e_vcard_construct                   (EVCard *evc,
                                                             const gchar *str);

### e_vcard_construct_with_uid ()

    void                e_vcard_construct_with_uid          (EVCard *evc,
                                                             const gchar *str,
                                                             const gchar *uid);

FIXME: Document me!

`evc` : | an EVCard
`str` : | a vCard string
`uid` : | a unique ID string

Since 3.4

### e_vcard_new ()

    EVCard *            e_vcard_new                         (void);

Creates a new, blank EVCard.

Returns : | A new, blank EVCard.

### e_vcard_new_from_string ()

    EVCard *            e_vcard_new_from_string             (const gchar *str);

Creates a new EVCard from the passed-in string representation.

`str` : | a string representation of the vcard to create
Returns : | A new EVCard.

### e_vcard_is_parsed ()

    gboolean            e_vcard_is_parsed                   (EVCard *evc);

Check if the `evc` has been parsed already. Used for debugging.

`evc` : | an EVCard
Returns : | `TRUE` if `evc` has been parsed, `FALSE` otherwise.

Since 3.2

### e_vcard_to_string ()

    gchar *             e_vcard_to_string                   (EVCard *evc,
                                                             EVCardFormat format);

Exports `evc` to a string representation, specified by the `format` argument.

`evc` : | the EVCard to export
`format` : | the format to export to
Returns : | A newly allocated string representing the vcard.

### e_vcard_dump_structure ()

    void                e_vcard_dump_structure              (EVCard *evc);

Prints a dump of `evc`'s structure to stdout. Used for debugging.

`evc` : | the EVCard to dump

### e_vcard_attribute_new ()

    EVCardAttribute *   e_vcard_attribute_new               (const gchar *attr_group,
                                                             const gchar *attr_name);

Creates a new EVCardAttribute with the specified group and attribute names.

`attr_group` : | a group name. [allow-none]
`attr_name` : | an attribute name
Returns : | A new EVCardAttribute.

### e_vcard_attribute_free ()

    void                e_vcard_attribute_free              (EVCardAttribute *attr);

Frees an attribute, its values and its parameters.

`attr` : | attribute to free

### e_vcard_attribute_copy ()

    EVCardAttribute *   e_vcard_attribute_copy              (EVCardAttribute *attr);

Makes a copy of `attr`.

`attr` : | attribute to copy
Returns : | A new EVCardAttribute identical to `attr`.

### e_vcard_remove_attributes ()

    void                e_vcard_remove_attributes           (EVCard *evc,
                                                             const gchar *attr_group,
                                                             const gchar *attr_name);

Removes all the attributes with group name and attribute name equal to passed in values. If `attr_group` is `NULL` or an empty string, it removes all the attributes with passed in name irrespective of their group names.

`evc` : | vcard object
`attr_group` : | group name of attributes to be removed. [allow-none]
`attr_name` : | name of the arributes to be removed

### e_vcard_remove_attribute ()

    void                e_vcard_remove_attribute            (EVCard *evc,
                                                             EVCardAttribute *attr);

Removes `attr` from `evc` and frees it.

`evc` : | an EVCard
`attr` : | an EVCardAttribute to remove

### e_vcard_append_attribute ()

    void                e_vcard_append_attribute            (EVCard *evc,
                                                             EVCardAttribute *attr);

Appends `attr` to `evc` to the end of a list of attributes.

`evc` : | an EVCard
`attr` : | an EVCardAttribute to append. [transfer full]

Since 2.32

### e_vcard_append_attribute_with_value ()

    void                e_vcard_append_attribute_with_value (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             const gchar *value);

Appends `attr` to `evcard`, setting it to `value`. For attribute addition is used `e_vcard_append_attribute()`.

`evcard` : | an EVCard
`attr` : | an EVCardAttribute to append. [transfer full]
`value` : | a value to assign to the attribute

Since 2.32

### e_vcard_append_attribute_with_values ()

    void                e_vcard_append_attribute_with_values
                                                            (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             ...);

Appends `attr` to `evcard`, assigning the list of values to it. For attribute addition is used `e_vcard_append_attribute()`.

`evcard` : | an `EVCard`
`attr` : | an EVCardAttribute to append. [transfer full]
`...` : | a `NULL`-terminated list of values to assign to the attribute

Since 2.32

### e_vcard_add_attribute ()

    void                e_vcard_add_attribute               (EVCard *evc,
                                                             EVCardAttribute *attr);

Adds `attr` to `evc`. It's added to the beginning of a list of attributes.

`evc` : | an EVCard
`attr` : | an EVCardAttribute to add. [transfer full]

### e_vcard_add_attribute_with_value ()

    void                e_vcard_add_attribute_with_value    (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             const gchar *value);

Adds `attr` to `evcard`, setting it to `value`. For attribute addition is used `e_vcard_add_attribute()`.

`evcard` : | an EVCard
`attr` : | an EVCardAttribute to add. [transfer full]
`value` : | a value to assign to the attribute

### e_vcard_add_attribute_with_values ()

    void                e_vcard_add_attribute_with_values   (EVCard *evcard,
                                                             EVCardAttribute *attr,
                                                             ...);

Adds `attr` to `evcard`, assigning the list of values to it. For attribute addition is used `e_vcard_add_attribute()`.

`evcard` : | an `EVCard`
`attr` : | an EVCardAttribute to add. [transfer full]
`...` : | a `NULL`-terminated list of values to assign to the attribute

### e_vcard_attribute_add_value ()

    void                e_vcard_attribute_add_value         (EVCardAttribute *attr,
                                                             const gchar *value);

Adds `value` to `attr`'s list of values.

`attr` : | an EVCardAttribute
`value` : | a string value

### e_vcard_attribute_add_value_decoded ()

    void                e_vcard_attribute_add_value_decoded (EVCardAttribute *attr,
                                                             const gchar *value,
                                                             gint len);

Decodes `value` according to the encoding used for `attr`, and adds it to `attr`'s list of values.

`attr` : | an EVCardAttribute
`value` : | an encoded value
`len` : | the length of the encoded value, in bytes

### e_vcard_attribute_add_values ()

    void                e_vcard_attribute_add_values        (EVCardAttribute *attr,
                                                             ...);

Adds a list of values to `attr`.

`attr` : | an EVCardAttribute
`...` : | a `NULL`-terminated list of strings

### e_vcard_attribute_remove_value ()

    void                e_vcard_attribute_remove_value      (EVCardAttribute *attr,
                                                             const gchar *s);

Removes from the value list in `attr` the value `s`.

`attr` : | an EVCardAttribute
`s` : | an value to remove

### e_vcard_attribute_remove_values ()

    void                e_vcard_attribute_remove_values     (EVCardAttribute *attr);

Removes all values from `attr`.

`attr` : | an EVCardAttribute

### e_vcard_attribute_remove_params ()

    void                e_vcard_attribute_remove_params     (EVCardAttribute *attr);

Removes all parameters from `attr`.

`attr` : | an EVCardAttribute

### e_vcard_attribute_remove_param ()

    void                e_vcard_attribute_remove_param      (EVCardAttribute *attr,
                                                             const gchar *param_name);

Removes the parameter `param_name` from the attribute `attr`.

`attr` : | an EVCardAttribute
`param_name` : | a parameter name

Since 1.12

### e_vcard_attribute_remove_param_value ()

    void                e_vcard_attribute_remove_param_value
                                                            (EVCardAttribute *attr,
                                                             const gchar *param_name,
                                                             const gchar *s);

Removes the value `s` from the parameter `param_name` on the attribute `attr`.

`attr` : | an EVCardAttribute
`param_name` : | a parameter name
`s` : | a value

### e_vcard_attribute_param_new ()

    EVCardAttributeParam * e_vcard_attribute_param_new      (const gchar *name);

Creates a new parameter named `name`.

`name` : | the name of the new parameter
Returns : | A new EVCardAttributeParam.

### e_vcard_attribute_param_free ()

    void                e_vcard_attribute_param_free        (EVCardAttributeParam *param);

Frees `param` and its values.

`param` : | an EVCardAttributeParam

### e_vcard_attribute_param_copy ()

    EVCardAttributeParam * e_vcard_attribute_param_copy     (EVCardAttributeParam *param);

Makes a copy of `param`.

`param` : | an EVCardAttributeParam
Returns : | a new EVCardAttributeParam identical to `param`.

### e_vcard_attribute_add_param ()

    void                e_vcard_attribute_add_param         (EVCardAttribute *attr,
                                                             EVCardAttributeParam *param);

Adds `param` to `attr`'s list of parameters. It tests for duplicities, only new parameters are added, when a new parameter already exists in attr, then those values are merged, also without creating duplicities. When we will not add whole param, then it's freed here.

`attr` : | an EVCardAttribute
`param` : | an EVCardAttributeParam to add. [transfer full]

### e_vcard_attribute_add_param_with_value ()

    void                e_vcard_attribute_add_param_with_value
                                                            (EVCardAttribute *attr,
                                                             EVCardAttributeParam *param,
                                                             const gchar *value);

Adds `value` to `param`, then adds `param` to `attr`.

`attr` : | an EVCardAttribute
`param` : | an EVCardAttributeParam. [transfer full]
`value` : | a string value

### e_vcard_attribute_add_param_with_values ()

    void                e_vcard_attribute_add_param_with_values
                                                            (EVCardAttribute *attr,
                                                             EVCardAttributeParam *param,
                                                             ...);

Adds the list of values to `param`, then adds `param` to `attr`.

`attr` : | an EVCardAttribute
`param` : | an EVCardAttributeParam. [transfer full]
`...` : | a `NULL`-terminated list of strings

### e_vcard_attribute_param_add_value ()

    void                e_vcard_attribute_param_add_value   (EVCardAttributeParam *param,
                                                             const gchar *value);

Adds `value` to `param`'s list of values.

`param` : | an EVCardAttributeParam
`value` : | a string value to add

### e_vcard_attribute_param_add_values ()

    void                e_vcard_attribute_param_add_values  (EVCardAttributeParam *param,
                                                             ...);

Adds a list of values to `param`.

`param` : | an EVCardAttributeParam
`...` : | a `NULL`-terminated list of strings

### e_vcard_attribute_param_remove_values ()

    void                e_vcard_attribute_param_remove_values
                                                            (EVCardAttributeParam *param);

Removes and frees all values from `param`.

`param` : | an EVCardAttributeParam

### e_vcard_get_attribute ()

    EVCardAttribute *   e_vcard_get_attribute               (EVCard *evc,
                                                             const gchar *name);

Get the attribute `name` from `evc`. The EVCardAttribute is owned by `evcard` and should not be freed. If the attribute does not exist, `NULL` is returned.

`evc` : | an EVCard
`name` : | the name of the attribute to get
Returns : | An EVCardAttribute if found, or `NULL`. [transfer none][allow-none]

### e_vcard_get_attribute_if_parsed ()

    EVCardAttribute *   e_vcard_get_attribute_if_parsed     (EVCard *evc,
                                                             const gchar *name);

Similar to `e_vcard_get_attribute()` but this method will not attempt to parse the vcard if not already parsed.

`evc` : | an EVCard
`name` : | the name of the attribute to get
Returns : | An EVCardAttribute if found, or `NULL`. [transfer none][allow-none]

Since 3.4

### e_vcard_get_attributes ()

    GList *             e_vcard_get_attributes              (EVCard *evcard);

Gets the list of attributes from `evcard`. The list and its contents are owned by `evcard`, and must not be freed.

`evcard` : | an EVCard
Returns : | A list of attributes of type EVCardAttribute. [transfer none][element-type EVCardAttribute]

### e_vcard_attribute_get_group ()

    const gchar *       e_vcard_attribute_get_group         (EVCardAttribute *attr);

Gets the group name of `attr`.

`attr` : | an EVCardAttribute
Returns : | The attribute's group name, or `NULL`. [allow-none]

### e_vcard_attribute_get_name ()

    const gchar *       e_vcard_attribute_get_name          (EVCardAttribute *attr);

Gets the name of `attr`.

`attr` : | an EVCardAttribute
Returns : | The attribute's name.

### e_vcard_attribute_get_values ()

    GList *             e_vcard_attribute_get_values        (EVCardAttribute *attr);

Gets the list of values from `attr`. The list and its contents are owned by `attr`, and must not be freed.

`attr` : | an EVCardAttribute
Returns : | A list of string values. They will all be non-`NULL`, but may be empty strings. The list itself may be empty. [transfer none][element-type utf8]

### e_vcard_attribute_get_values_decoded ()

    GList *             e_vcard_attribute_get_values_decoded
                                                            (EVCardAttribute *attr);

Gets the list of values from `attr`, decoding them if necessary. The list and its contents are owned by `attr`, and must not be freed.

`attr` : | an EVCardAttribute
Returns : | A list of values of type GString. [transfer none][element-type GString]

### e_vcard_attribute_is_single_valued ()

    gboolean            e_vcard_attribute_is_single_valued  (EVCardAttribute *attr);

Checks if `attr` has a single value.

`attr` : | an EVCardAttribute
Returns : | `TRUE` if the attribute has exactly one value, `FALSE` otherwise.

### e_vcard_attribute_get_value ()

    gchar *             e_vcard_attribute_get_value         (EVCardAttribute *attr);

Gets the value of a single-valued EVCardAttribute, `attr`.

`attr` : | an EVCardAttribute
Returns : | A newly allocated string representing the value, or `NULL` if the attribute has no value. [allow-none]

### e_vcard_attribute_get_value_decoded ()

    GString *           e_vcard_attribute_get_value_decoded (EVCardAttribute *attr);

Gets the value of a single-valued EVCardAttribute, `attr`, decoding it if necessary.

Note: this function seems currently to be unused. Could be removed.

`attr` : | an EVCardAttribute
Returns : | A newly allocated GString representing the value, or `NULL` if the attribute has no value. [allow-none]

### e_vcard_attribute_get_params ()

    GList *             e_vcard_attribute_get_params        (EVCardAttribute *attr);

Gets the list of parameters from `attr`. The list and its contents are owned by `attr`, and must not be freed.

`attr` : | an EVCardAttribute
Returns : | A list of elements of type EVCardAttributeParam. [transfer none][element-type EVCardAttributeParam]

### e_vcard_attribute_get_param ()

    GList *             e_vcard_attribute_get_param         (EVCardAttribute *attr,
                                                             const gchar *name);

Gets the list of values for the paramater `name` from `attr`. The list and its contents are owned by `attr`, and must not be freed.

`attr` : | an EVCardAttribute
`name` : | a parameter name
Returns : | A list of string elements representing the parameter's values. [transfer none][element-type utf8]

### e_vcard_attribute_param_get_name ()

    const gchar *       e_vcard_attribute_param_get_name    (EVCardAttributeParam *param);

Gets the name of `param`.

`param` : | an EVCardAttributeParam
Returns : | The name of the parameter.

### e_vcard_attribute_param_get_values ()

    GList *             e_vcard_attribute_param_get_values  (EVCardAttributeParam *param);

Gets the list of values from `param`. The list and its contents are owned by `param`, and must not be freed.

`param` : | an EVCardAttributeParam
Returns : | A list of string elements representing the parameter's values. [transfer none][element-type utf8]

### e_vcard_attribute_has_type ()

    gboolean            e_vcard_attribute_has_type          (EVCardAttribute *attr,
                                                             const gchar *typestr);

Checks if `attr` has an EVCardAttributeParam of the specified type.

`attr` : | an EVCardAttribute
`typestr` : | a string representing the type
Returns : | `TRUE` if such a parameter exists, `FALSE` otherwise.

### e_vcard_escape_string ()

    gchar *             e_vcard_escape_string               (const gchar *s);

Escapes a string according to RFC2426, section 5.

`s` : | the string to escape
Returns : | A newly allocated, escaped string.

### e_vcard_unescape_string ()

    gchar *             e_vcard_unescape_string             (const gchar *s);

Unescapes a string according to RFC2426, section 5.

`s` : | the string to unescape
Returns : | A newly allocated, unescaped string.

### EVCardAttribute

    typedef struct _EVCardAttribute EVCardAttribute;

### EVCardAttributeParam

    typedef struct _EVCardAttributeParam EVCardAttributeParam;