## hb-set

hb-set

## Synopsis

    void                hb_set_add                          (hb_set_t *set,
                                                             hb_codepoint_t codepoint);
    void                hb_set_add_range                    (hb_set_t *set,
                                                             hb_codepoint_t first,
                                                             hb_codepoint_t last);
    hb_bool_t           hb_set_allocation_successful        (const hb_set_t *set);
    void                hb_set_clear                        (hb_set_t *set);
    hb_set_t *          hb_set_create                       (void);
    void                hb_set_del                          (hb_set_t *set,
                                                             hb_codepoint_t codepoint);
    void                hb_set_del_range                    (hb_set_t *set,
                                                             hb_codepoint_t first,
                                                             hb_codepoint_t last);
    void                hb_set_destroy                      (hb_set_t *set);
    hb_set_t *          hb_set_get_empty                    (void);
    hb_codepoint_t      hb_set_get_max                      (const hb_set_t *set);
    hb_codepoint_t      hb_set_get_min                      (const hb_set_t *set);
    unsigned int        hb_set_get_population               (const hb_set_t *set);
    void *              hb_set_get_user_data                (hb_set_t *set,
                                                             hb_user_data_key_t *key);
    hb_bool_t           hb_set_has                          (const hb_set_t *set,
                                                             hb_codepoint_t codepoint);
    void                hb_set_intersect                    (hb_set_t *set,
                                                             const hb_set_t *other);
    void                hb_set_invert                       (hb_set_t *set);
    hb_bool_t           hb_set_is_empty                     (const hb_set_t *set);
    hb_bool_t           hb_set_is_equal                     (const hb_set_t *set,
                                                             const hb_set_t *other);
    hb_bool_t           hb_set_next                         (const hb_set_t *set,
                                                             hb_codepoint_t *codepoint);
    hb_bool_t           hb_set_next_range                   (const hb_set_t *set,
                                                             hb_codepoint_t *first,
                                                             hb_codepoint_t *last);
    hb_set_t *          hb_set_reference                    (hb_set_t *set);
    void                hb_set_set                          (hb_set_t *set,
                                                             const hb_set_t *other);
    hb_bool_t           hb_set_set_user_data                (hb_set_t *set,
                                                             hb_user_data_key_t *key,
                                                             void *data,
                                                             hb_destroy_func_t destroy,
                                                             hb_bool_t replace);
    void                hb_set_subtract                     (hb_set_t *set,
                                                             const hb_set_t *other);
    void                hb_set_symmetric_difference         (hb_set_t *set,
                                                             const hb_set_t *other);
    typedef             hb_set_t;
    void                hb_set_union                        (hb_set_t *set,
                                                             const hb_set_t *other);

## Description

## Details

### hb_set_add ()

    void                hb_set_add                          (hb_set_t *set,
                                                             hb_codepoint_t codepoint);

`set` : | a set.

Since 1.0

### hb_set_add_range ()

    void                hb_set_add_range                    (hb_set_t *set,
                                                             hb_codepoint_t first,
                                                             hb_codepoint_t last);

`set` : | a set.

Since 1.0

### hb_set_allocation_successful ()

    hb_bool_t           hb_set_allocation_successful        (const hb_set_t *set);

`set` : | a set.

Since 1.0

### hb_set_clear ()

    void                hb_set_clear                        (hb_set_t *set);

`set` : | a set.

Since 1.0

### hb_set_create ()

    hb_set_t *          hb_set_create                       (void);

### hb_set_del ()

    void                hb_set_del                          (hb_set_t *set,
                                                             hb_codepoint_t codepoint);

`set` : | a set.

Since 1.0

### hb_set_del_range ()

    void                hb_set_del_range                    (hb_set_t *set,
                                                             hb_codepoint_t first,
                                                             hb_codepoint_t last);

`set` : | a set.

Since 1.0

### hb_set_destroy ()

    void                hb_set_destroy                      (hb_set_t *set);

`set` : | a set.

Since 1.0

### hb_set_get_empty ()

    hb_set_t *          hb_set_get_empty                    (void);

Returns : | . [transfer full]

Since 1.0

### hb_set_get_max ()

    hb_codepoint_t      hb_set_get_max                      (const hb_set_t *set);

Finds the maximum number in the set.

`set` : | a set.
Returns : | minimum of the set, or `HB_SET_VALUE_INVALID` if set is empty.

Since 1.0

### hb_set_get_min ()

    hb_codepoint_t      hb_set_get_min                      (const hb_set_t *set);

Finds the minimum number in the set.

`set` : | a set.
Returns : | minimum of the set, or `HB_SET_VALUE_INVALID` if set is empty.

Since 1.0

### hb_set_get_population ()

    unsigned int        hb_set_get_population               (const hb_set_t *set);

Returns the number of numbers in the set.

`set` : | a set.
Returns : | set population.

Since 1.0

### hb_set_get_user_data ()

    void *              hb_set_get_user_data                (hb_set_t *set,
                                                             hb_user_data_key_t *key);

`set` : | a set.
Returns : | . [transfer none]

Since 1.0

### hb_set_has ()

    hb_bool_t           hb_set_has                          (const hb_set_t *set,
                                                             hb_codepoint_t codepoint);

`set` : | a set.

Since 1.0

### hb_set_intersect ()

    void                hb_set_intersect                    (hb_set_t *set,
                                                             const hb_set_t *other);

`set` : | a set.

Since 1.0

### hb_set_invert ()

    void                hb_set_invert                       (hb_set_t *set);

`set` : | a set.

Since 1.0

### hb_set_is_empty ()

    hb_bool_t           hb_set_is_empty                     (const hb_set_t *set);

`set` : | a set.

Since 1.0

### hb_set_is_equal ()

    hb_bool_t           hb_set_is_equal                     (const hb_set_t *set,
                                                             const hb_set_t *other);

`set` : | a set.

Since 1.0

### hb_set_next ()

    hb_bool_t           hb_set_next                         (const hb_set_t *set,
                                                             hb_codepoint_t *codepoint);

`set` : | a set.
`codepoint` : | . [inout]
Returns : | whether there was a next value.

Since 1.0

### hb_set_next_range ()

    hb_bool_t           hb_set_next_range                   (const hb_set_t *set,
                                                             hb_codepoint_t *first,
                                                             hb_codepoint_t *last);

Gets the next consecutive range of numbers in `set` that are greater than current value of `last`.

`set` : | a set.
`first` : | output first codepoint in the range. [out]
`last` : | input current last and output last codepoint in the range. [inout]
Returns : | whether there was a next range.

Since 1.0

### hb_set_reference ()

    hb_set_t *          hb_set_reference                    (hb_set_t *set);

`set` : | a set.
Returns : | . [transfer full]

Since 1.0

### hb_set_set ()

    void                hb_set_set                          (hb_set_t *set,
                                                             const hb_set_t *other);

`set` : | a set.

Since 1.0

### hb_set_set_user_data ()

    hb_bool_t           hb_set_set_user_data                (hb_set_t *set,
                                                             hb_user_data_key_t *key,
                                                             void *data,
                                                             hb_destroy_func_t destroy,
                                                             hb_bool_t replace);

`set` : | a set.
`data` : | `destroy` (closure data):

Since 1.0

### hb_set_subtract ()

    void                hb_set_subtract                     (hb_set_t *set,
                                                             const hb_set_t *other);

`set` : | a set.

Since 1.0

### hb_set_symmetric_difference ()

    void                hb_set_symmetric_difference         (hb_set_t *set,
                                                             const hb_set_t *other);

`set` : | a set.

Since 1.0

### hb_set_t

    typedef struct hb_set_t hb_set_t;

### hb_set_union ()

    void                hb_set_union                        (hb_set_t *set,
                                                             const hb_set_t *other);

`set` : | a set.

Since 1.0