## AtkStateSet AtkStateSet — An AtkStateSet contains the states of an object. |

## Functions

AtkStateSet * | atk_state_set_new ()
gboolean | atk_state_set_is_empty ()
gboolean | atk_state_set_add_state ()
void | atk_state_set_add_states ()
void | atk_state_set_clear_states ()
gboolean | atk_state_set_contains_state ()
gboolean | atk_state_set_contains_states ()
gboolean | atk_state_set_remove_state ()
AtkStateSet * | atk_state_set_and_sets ()
AtkStateSet * | atk_state_set_or_sets ()
AtkStateSet * | atk_state_set_xor_sets ()

## Types and Values

| AtkStateSet

## Object Hierarchy

        GObject
        ╰── AtkStateSet

## Includes

    #include <atk/atk.h>

## Description

An AtkStateSet is a read-only representation of the full set of AtkStates that apply to an object at a given time. This set is not meant to be modified, but rather created when `atk_object_ref_state_set()` is called.

## Functions

### atk_state_set_new ()

    AtkStateSet *
    atk_state_set_new (void);

Creates a new empty state set.

#### Returns

a new AtkStateSet

### atk_state_set_is_empty ()

    gboolean
    atk_state_set_is_empty (AtkStateSet *set);

Checks whether the state set is empty, i.e. has no states set.

#### Parameters

set | an AtkStateType |

#### Returns

`TRUE` if `set` has no states set, otherwise `FALSE`

### atk_state_set_add_state ()

    gboolean
    atk_state_set_add_state (AtkStateSet *set,
                             AtkStateType type);

Adds the state of the specified type to the state set if it is not already present.

Note that because an AtkStateSet is a read-only object, this method should be used to add a state to a newly-created set which will then be returned by atk_object_ref_state_set. It should not be used to modify the existing state of an object. See also atk_object_notify_state_change.

#### Parameters

set | an AtkStateSet |
type | an AtkStateType |

#### Returns

`TRUE` if the state for `type` is not already in `set` .

### atk_state_set_add_states ()

    void
    atk_state_set_add_states (AtkStateSet *set,
                              AtkStateType *types,
                              gint n_types);

Adds the states of the specified types to the state set.

Note that because an AtkStateSet is a read-only object, this method should be used to add states to a newly-created set which will then be returned by atk_object_ref_state_set. It should not be used to modify the existing state of an object. See also atk_object_notify_state_change.

#### Parameters

set | an AtkStateSet |
types | an array of AtkStateType. | [array length=n_types]
n_types | The number of elements in the array |

### atk_state_set_clear_states ()

    void
    atk_state_set_clear_states (AtkStateSet *set);

Removes all states from the state set.

#### Parameters

set | an AtkStateSet |

### atk_state_set_contains_state ()

    gboolean
    atk_state_set_contains_state (AtkStateSet *set,
                                  AtkStateType type);

Checks whether the state for the specified type is in the specified set.

#### Parameters

set | an AtkStateSet |
type | an AtkStateType |

#### Returns

`TRUE` if `type` is the state type is in `set` .

### atk_state_set_contains_states ()

    gboolean
    atk_state_set_contains_states (AtkStateSet *set,
                                   AtkStateType *types,
                                   gint n_types);

Checks whether the states for all the specified types are in the specified set.

#### Parameters

set | an AtkStateSet |
types | an array of AtkStateType. | [array length=n_types]
n_types | The number of elements in the array |

#### Returns

`TRUE` if all the states for `type` are in `set` .

### atk_state_set_remove_state ()

    gboolean
    atk_state_set_remove_state (AtkStateSet *set,
                                AtkStateType type);

Removes the state for the specified type from the state set.

Note that because an AtkStateSet is a read-only object, this method should be used to remove a state to a newly-created set which will then be returned by atk_object_ref_state_set. It should not be used to modify the existing state of an object. See also atk_object_notify_state_change.

#### Parameters

set | an AtkStateSet |
type | an AtkType |

#### Returns

`TRUE` if `type` was the state type is in `set` .

### atk_state_set_and_sets ()

    AtkStateSet *
    atk_state_set_and_sets (AtkStateSet *set,
                            AtkStateSet *compare_set);

Constructs the intersection of the two sets, returning `NULL` if the intersection is empty.

#### Parameters

set | an AtkStateSet |
compare_set | another AtkStateSet |

#### Returns

a new AtkStateSet which is the intersection of the two sets.

[transfer full]

### atk_state_set_or_sets ()

    AtkStateSet *
    atk_state_set_or_sets (AtkStateSet *set,
                           AtkStateSet *compare_set);

Constructs the union of the two sets.

#### Parameters

set | an AtkStateSet |
compare_set | another AtkStateSet |

#### Returns

a new AtkStateSet which is the union of the two sets, returning `NULL` is empty.

[nullable][transfer full]

### atk_state_set_xor_sets ()

    AtkStateSet *
    atk_state_set_xor_sets (AtkStateSet *set,
                            AtkStateSet *compare_set);

Constructs the exclusive-or of the two sets, returning `NULL` is empty. The set returned by this operation contains the states in exactly one of the two sets.

#### Parameters

set | an AtkStateSet |
compare_set | another AtkStateSet |

#### Returns

a new AtkStateSet which contains the states which are in exactly one of the two sets.

[transfer full]

## Types and Values

### AtkStateSet

    typedef struct _AtkStateSet AtkStateSet;