### Struct

# Gtk.Bitset

#### Description [src]

struct GtkBitset {
/* No available fields */
}

`GtkBitset`

is a data structure for representing a set of unsigned integers.
Another name for this data structure is “bitmap”.

The current implementation is based on roaring bitmaps.

A bitset allows adding a set of integers and provides support for set operations
like unions, intersections and checks for equality or if a value is contained
in the set. `GtkBitset`

also contains various functions to query metadata about
the bitset, such as the minimum or maximum values or its size.

The fastest way to iterate values in a bitset is `GtkBitsetIter`

.

The main use case for `GtkBitset`

is implementing complex selections for
`GtkSelectionModel`

.

#### Constructors

###### gtk_bitset_new_empty

Creates a new empty bitset.

###### gtk_bitset_new_range

Creates a bitset with the given range set.

#### Instance methods

###### gtk_bitset_add

Adds `value`

to `self`

if it wasn’t part of it before.

###### gtk_bitset_add_range

Adds all values from `start`

(inclusive) to `start`

+ `n_items`

(exclusive) in `self`

.

###### gtk_bitset_add_range_closed

Adds the closed range [`first`

, `last`

], so `first`

, `last`

and all
values in between. `first`

must be smaller than `last`

.

###### gtk_bitset_add_rectangle

Interprets the values as a 2-dimensional boolean grid with the given `stride`

and inside that grid, adds a rectangle with the given `width`

and `height`

.

###### gtk_bitset_contains

Checks if the given `value`

has been added to `self`

###### gtk_bitset_copy

Creates a copy of `self`

.

###### gtk_bitset_difference

Sets `self`

to be the symmetric difference of `self`

and `other`

, that
is set `self`

to contain all values that were either contained in `self`

or in `other`

, but not in both.
This operation is also called an XOR.

###### gtk_bitset_equals

Returns `TRUE`

if `self`

and `other`

contain the same values.

###### gtk_bitset_get_maximum

Returns the largest value in `self`

. If `self`

is empty,
0 is returned.

###### gtk_bitset_get_minimum

Returns the smallest value in `self`

. If `self`

is empty,
G_MAXUINT is returned.

###### gtk_bitset_get_nth

Returns the value of the `nth`

item in self.

###### gtk_bitset_get_size

Gets the number of values that were added to the set. For example, if the set is empty, 0 is returned.

###### gtk_bitset_get_size_in_range

Gets the number of values that are part of the set from `first`

to `last`

(inclusive).

###### gtk_bitset_intersect

Sets `self`

to be the intersection of `self`

and `other`

, that is remove
all values from `self`

that are not part of `other`

.

###### gtk_bitset_is_empty

Check if no value is contained in bitset.

###### gtk_bitset_ref

Acquires a reference on the given `GtkBitset`

.

###### gtk_bitset_remove

Removes `value`

from `self`

if it was part of it before.

###### gtk_bitset_remove_all

Removes all values from the bitset so that it is empty again.

###### gtk_bitset_remove_range

Removes all values from `start`

(inclusive) to `start`

+ `n_items`

(exclusive)
in `self`

.

###### gtk_bitset_remove_range_closed

Removes the closed range [`first`

, `last`

], so `first`

, `last`

and all
values in between. `first`

must be smaller than `last`

.

###### gtk_bitset_remove_rectangle

Interprets the values as a 2-dimensional boolean grid with the given `stride`

and inside that grid, removes a rectangle with the given `width`

and `height`

.

###### gtk_bitset_shift_left

Shifts all values in `self`

to the left by `amount`

. Values
smaller than `amount`

are discarded.

###### gtk_bitset_shift_right

Shifts all values in `self`

to the right by `amount`

. Values
that end up too large to be held in a #guint are discarded.

###### gtk_bitset_splice

This is a support function for `GListModel`

handling, by mirroring
the `GlistModel::items-changed`

signal.

###### gtk_bitset_subtract

Sets `self`

to be the subtraction of `other`

from `self`

, that is remove
all values from `self`

that are part of `other`

.

###### gtk_bitset_union

Sets `self`

to be the union of `self`

and `other`

, that is add all values
from `other`

into `self`

that weren’t part of it.

###### gtk_bitset_unref

Releases a reference on the given `GtkBitset`

.