## Item Attributes Item Attributes — Attributes of individual keyring items. |

## Synopsis

    enum                GnomeKeyringAttributeType;
    typedef             GnomeKeyringAttributeList;
                        GnomeKeyringAttribute;
    #define             gnome_keyring_attribute_list_index  (a,
                                                             i)
    GnomeKeyringAttributeList * gnome_keyring_attribute_list_new
                                                            (void);
    void                gnome_keyring_attribute_list_append_string
                                                            (GnomeKeyringAttributeList *attributes,
                                                             const char *name,
                                                             const char *value);
    void                gnome_keyring_attribute_list_append_uint32
                                                            (GnomeKeyringAttributeList *attributes,
                                                             const char *name,
                                                             guint32 value);
    void                gnome_keyring_attribute_list_free   (GnomeKeyringAttributeList *attributes);
    GnomeKeyringAttributeList * gnome_keyring_attribute_list_copy
                                                            (GnomeKeyringAttributeList *attributes);
    const gchar *       gnome_keyring_attribute_get_string  (GnomeKeyringAttribute *attribute);
    guint32             gnome_keyring_attribute_get_uint32  (GnomeKeyringAttribute *attribute);

## Description

Attributes allow various other pieces of information to be associated with an item. These can also be used to search for relevant items. Use `gnome_keyring_item_get_attributes()` or `gnome_keyring_item_set_attributes()`.

Attributes are not stored in a secret or encrypted manner by gnome-keyring. Do not store sensitive information in attributes.

Each attribute has either a string, or unsigned integer value.

## Details

### enum GnomeKeyringAttributeType

    typedef enum {
    	GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
    	GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
    } GnomeKeyringAttributeType;

The data type of the item attribute.

`GNOME_KEYRING_ATTRIBUTE_TYPE_STRING` | A UTF-8 encoded string attribute.
`GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32` | A unsigned integer attribute.

### GnomeKeyringAttributeList

    typedef GArray GnomeKeyringAttributeList;

### GnomeKeyringAttribute

    typedef struct {
    	char *name;
    	GnomeKeyringAttributeType type;
    	union {
    		char *string;
    		guint32 integer;
    	} value;
    } GnomeKeyringAttribute;

An item attribute. Set `string` if data type is `GNOME_KEYRING_ATTRIBUTE_TYPE_STRING` or `integer` if data type is `GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32`

char *`name`; | The name of the attribute.
GnomeKeyringAttributeType `type`; | The data type.

### gnome_keyring_attribute_list_index()

    #define             gnome_keyring_attribute_list_index(a, i)

### gnome_keyring_attribute_list_new ()

    GnomeKeyringAttributeList * gnome_keyring_attribute_list_new
                                                            (void);

Create a new GnomeKeyringAttributeList.

Returns : | The new GnomeKeyringAttributeList. [transfer full]

### gnome_keyring_attribute_list_append_string ()

    void                gnome_keyring_attribute_list_append_string
                                                            (GnomeKeyringAttributeList *attributes,
                                                             const char *name,
                                                             const char *value);

Store a key-value-pair with a string value in `attributes`.

`attributes` : | A GnomeKeyringAttributeList
`name` : | The name of the new attribute
`value` : | The value to store in `attributes`

### gnome_keyring_attribute_list_append_uint32 ()

    void                gnome_keyring_attribute_list_append_uint32
                                                            (GnomeKeyringAttributeList *attributes,
                                                             const char *name,
                                                             guint32 value);

Store a key-value-pair with an unsigned 32bit number value in `attributes`.

`attributes` : | A GnomeKeyringAttributeList
`name` : | The name of the new attribute
`value` : | The value to store in `attributes`

### gnome_keyring_attribute_list_free ()

    void                gnome_keyring_attribute_list_free   (GnomeKeyringAttributeList *attributes);

Free the memory used by `attributes`.

If a `NULL` pointer is passed, it is ignored.

`attributes` : | A GnomeKeyringAttributeList

### gnome_keyring_attribute_list_copy ()

    GnomeKeyringAttributeList * gnome_keyring_attribute_list_copy
                                                            (GnomeKeyringAttributeList *attributes);

Copy a list of item attributes.

`attributes` : | A GnomeKeyringAttributeList to copy.
Returns : | The new GnomeKeyringAttributeList. [transfer full]

### gnome_keyring_attribute_get_string ()

    const gchar *       gnome_keyring_attribute_get_string  (GnomeKeyringAttribute *attribute);

Return the string value. It is an error to call this method if `attribute.type` is not GNOME_KEYRING_ATTRIBUTE_TYPE_STRING. This method is mostly useful for language bindings which do not provide union access. In C you should just use attribute->value.string.

`attribute` : | a GnomeKeyringAttribute
Returns : | The value.string pointer of `attribute`. This is not a copy, do not free. [transfer none]

### gnome_keyring_attribute_get_uint32 ()

    guint32             gnome_keyring_attribute_get_uint32  (GnomeKeyringAttribute *attribute);

Return the uint32 value. It is an error to call this method if `attribute.type` is not GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32. This method is mostly useful for language bindings which do not provide union access. In C you should just use attribute->value.integer.

`attribute` : | a GnomeKeyringAttribute
Returns : | The value.integer of `attribute`.