### Method

# GIRepository BaseInfo iterate_attributes

since: 2.80

#### Declaration [src]

    gboolean
    gi_base_info_iterate_attributes (
      GIBaseInfo* info,
      GIAttributeIter* iterator,
      const char** name,
      const char** value
    )

#### Description [src]

Iterate over all attributes associated with this node.

The iterator structure is typically stack allocated, and must have its first member initialized to `NULL`. Attributes are arbitrary namespaced key–value pairs which can be attached to almost any item. They are intended for use by software higher in the toolchain than bindings, and are distinct from normal GIR annotations.

Both the `name` and `value` should be treated as constants and must not be freed.

    void
    print_attributes (GIBaseInfo *info)
    {
      GIAttributeIter iter = GI_ATTRIBUTE_ITER_INIT;
      const char *name;
      const char *value;
      while (gi_base_info_iterate_attributes (info, &iter, &name, &value))
        {
          g_print ("attribute name: %s value: %s", name, value);
        }
    }

Available since: 2.80

#### Parameters

`iterator`

  Type: `GIAttributeIter`

  A `GIAttributeIter` structure, must be initialized; see below.

  The argument will be modified by the function.
  The caller of the method takes ownership of the returned data, and is responsible for freeing it.

`name`

  Type: `const char**`

  Returned name, must not be freed.

  The argument will be set by the function.
  The returned data is owned by the instance.
  The value is a NUL terminated UTF-8 string.

`value`

  Type: `const char**`

  Returned name, must not be freed.

  The argument will be set by the function.
  The returned data is owned by the instance.
  The value is a NUL terminated UTF-8 string.

#### Return value

Type: `gboolean`

`TRUE` if there are more attributes.