## AccessibleRelations and RelationSets AccessibleRelations and RelationSets |

## Synopsis

    enum                AccessibleRelationType;
    void                AccessibleRelation_ref              (AccessibleRelation *obj);
    void                AccessibleRelation_unref            (AccessibleRelation *obj);
    int                 AccessibleRelation_getNTargets      (AccessibleRelation *obj);
    Accessible*         AccessibleRelation_getTarget        (AccessibleRelation *obj,
                                                             int i);
    AccessibleRelationType AccessibleRelation_getRelationType
                                                            (AccessibleRelation *obj);

## Description

## Details

### enum AccessibleRelationType

    typedef enum
    {
      SPI_RELATION_NULL,
      SPI_RELATION_LABEL_FOR,
      SPI_RELATION_LABELED_BY,
      SPI_RELATION_CONTROLLER_FOR,
      SPI_RELATION_CONTROLLED_BY,
      SPI_RELATION_MEMBER_OF,
      SPI_RELATION_NODE_CHILD_OF,
      SPI_RELATION_EXTENDED,
      SPI_RELATION_FLOWS_TO,
      SPI_RELATION_FLOWS_FROM,
      SPI_RELATION_SUBWINDOW_OF,
      SPI_RELATION_EMBEDS,
      SPI_RELATION_EMBEDDED_BY,
      SPI_RELATION_POPUP_FOR,
      SPI_RELATION_PARENT_WINDOW_OF,
      SPI_RELATION_DESCRIPTION_FOR,
      SPI_RELATION_DESCRIBED_BY,
      SPI_RELATION_LAST_DEFINED
    } AccessibleRelationType;

Describes the type of the relation

`SPI_RELATION_NULL` | Not used, this is an invalid value for this enumeration.
`SPI_RELATION_LABEL_FOR` | Indicates an object is a label for one or more target objects.
`SPI_RELATION_LABELED_BY` | Indicates an object is labelled by one or more target objects.
`SPI_RELATION_CONTROLLER_FOR` | Indicates an object is an controller for one or more target objects.
`SPI_RELATION_CONTROLLED_BY` | Indicates an object controlled by one or more target objects.
`SPI_RELATION_MEMBER_OF` | Indicates an object is a member of a group of one or more target objects.
`SPI_RELATION_NODE_CHILD_OF` | Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell.
`SPI_RELATION_EXTENDED` | This value indicates that a relation other than those pre-specified by this version of AT-SPI is present.
`SPI_RELATION_FLOWS_TO` | Indicates that the object has content that flows logically to another AtkObject in a sequential way, (for instance text-flow).
`SPI_RELATION_FLOWS_FROM` | Indicates that the object has content that flows logically from another AtkObject in a sequential way, (for instance text-flow).
`SPI_RELATION_SUBWINDOW_OF` | Indicates a subwindow attached to a component but otherwise has no connection in the UI heirarchy to that component.
`SPI_RELATION_EMBEDS` | Indicates that the object visually embeds another object's content, i.e. this object's content flows around another's content.
`SPI_RELATION_EMBEDDED_BY` | Inverse of `SPI_RELATION_EMBEDS`, indicates that this object's content is visualy embedded in another object.
`SPI_RELATION_POPUP_FOR` | Indicates that an object is a popup for another object.
`SPI_RELATION_PARENT_WINDOW_OF` | Indicates that an object is a parent window of another object.
`SPI_RELATION_DESCRIPTION_FOR` | Indicates that an object provides descriptive information about another object; more verbose than `SPI_RELATION_LABEL_FOR`.
`SPI_RELATION_DESCRIBED_BY` | Indicates that another object provides descriptive information about this object; more verbose than `SPI_RELATION_LABELLED_BY`.
`SPI_RELATION_LAST_DEFINED` | Do not use, this is an implementation detail used to identify the size of this enumeration.

### AccessibleRelation_ref ()

    void                AccessibleRelation_ref              (AccessibleRelation *obj);

Increment the reference count for an AccessibleRelation object.

`obj` : | a pointer to the AccessibleRelation object on which to operate.

### AccessibleRelation_unref ()

    void                AccessibleRelation_unref            (AccessibleRelation *obj);

Decrement the reference count for an AccessibleRelation object.

`obj` : | a pointer to the AccessibleRelation object on which to operate.

### AccessibleRelation_getNTargets ()

    int                 AccessibleRelation_getNTargets      (AccessibleRelation *obj);

Get the number of objects which this relationship has as its target objects (the subject is the Accessible from which this AccessibleRelation originated).

`obj` : | a pointer to the AccessibleRelation object to query.
Returns : | a short integer indicating how many target objects which the originating Accessible object has the AccessibleRelation relationship with.

### AccessibleRelation_getTarget ()

    Accessible*         AccessibleRelation_getTarget        (AccessibleRelation *obj,
                                                             int i);

Get the `i`-th target of a specified AccessibleRelation relationship.

`obj` : | a pointer to the AccessibleRelation object to query.
`i` : | a (zero-index) integer indicating which (of possibly several) target is requested.
Returns : | an Accessible which is the `i`-th object with which the originating Accessible has relationship specified in the AccessibleRelation object.

### AccessibleRelation_getRelationType ()

    AccessibleRelationType AccessibleRelation_getRelationType
                                                            (AccessibleRelation *obj);

Get the type of relationship represented by an AccessibleRelation.

`obj` : | a pointer to the AccessibleRelation object to query.
Returns : | an AccessibleRelationType indicating the type of relation encapsulated in this AccessibleRelation object.