Gtk.Bitset¶
record (struct)
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 BitsetIter.
The main use case for GtkBitset is implementing complex selections for
SelectionModel.
Constructors¶
new_empty¶
Creates a new empty bitset.
new_range¶
Creates a bitset with the given range set.
Parameters:
start— first value to addn_items— number of consecutive values to add
Methods¶
add¶
Adds value to self if it wasn't part of it before.
Parameters:
value— value to add
add_range¶
Adds all values from start (inclusive) to start + n_items
(exclusive) in self.
Parameters:
start— first value to addn_items— number of consecutive values to add
add_range_closed¶
Adds the closed range [first, last], so first, last and all
values in between. first must be smaller than last.
Parameters:
first— first value to addlast— last value to add
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.
Parameters:
start— first value to addwidth— width of the rectangleheight— height of the rectanglestride— row stride of the grid
contains¶
Checks if the given value has been added to self
Parameters:
value— the value to check
copy¶
Creates a copy of self.
difference¶
Sets self to be the symmetric difference of self and other.
The symmetric difference 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.
It is allowed for self and other to be the same bitset. The bitset
will be emptied in that case.
Parameters:
other— theGtkBitsetto compute the difference from
equals¶
Returns True if self and other contain the same values.
Parameters:
other— anotherGtkBitset
get_maximum¶
Returns the largest value in self.
If self is empty, 0 is returned.
get_minimum¶
Returns the smallest value in self.
If self is empty, G_MAXUINT is returned.
get_nth¶
Returns the value of the nth item in self.
If nth is >= the size of self, 0 is returned.
Parameters:
nth— index of the item to get
get_size¶
Gets the number of values that were added to the set.
For example, if the set is empty, 0 is returned.
Note that this function returns a guint64, because when all
values are set, the return value is G_MAXUINT + 1. Unless you
are sure this cannot happen (it can't with GListModel), be sure
to use a 64bit type.
get_size_in_range¶
Gets the number of values that are part of the set from first to last
(inclusive).
Note that this function returns a guint64, because when all values are
set, the return value is G_MAXUINT + 1. Unless you are sure this cannot
happen (it can't with GListModel), be sure to use a 64bit type.
Parameters:
first— the first element to includelast— the last element to include
intersect¶
Sets self to be the intersection of self and other.
In other words, remove all values from self that are not part of other.
It is allowed for self and other to be the same bitset. Nothing will
happen in that case.
Parameters:
other— theGtkBitsetto intersect with
is_empty¶
Check if no value is contained in bitset.
ref¶
Acquires a reference on the given GtkBitset.
remove¶
Removes value from self if it was part of it before.
Parameters:
value— value to remove
remove_all¶
Removes all values from the bitset so that it is empty again.
remove_range¶
Removes all values from start (inclusive) to start + n_items (exclusive)
in self.
Parameters:
start— first value to removen_items— number of consecutive values to remove
remove_range_closed¶
Removes the closed range [first, last], so first, last and all
values in between. first must be smaller than last.
Parameters:
first— first value to removelast— last value to remove
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.
Parameters:
start— first value to removewidth— width of the rectangleheight— height of the rectanglestride— row stride of the grid
shift_left¶
Shifts all values in self to the left by amount.
Values smaller than amount are discarded.
Parameters:
amount— amount to shift all values to the left
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.
Parameters:
amount— amount to shift all values to the right
splice¶
This is a support function for GListModel handling, by mirroring
the GlistModel::items-changed signal.
First, it "cuts" the values from position to removed from
the bitset. That is, it removes all those values and shifts
all larger values to the left by removed places.
Then, it "pastes" new room into the bitset by shifting all values
larger than position by added spaces to the right. This frees
up space that can then be filled.
Parameters:
position— position at which to sliceremoved— number of values to removeadded— number of values to add
subtract¶
Sets self to be the subtraction of other from self.
In other words, remove all values from self that are part of other.
It is allowed for self and other to be the same bitset. The bitset
will be emptied in that case.
Parameters:
other— theGtkBitsetto subtract
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.
It is allowed for self and other to be the same bitset. Nothing will
happen in that case.
Parameters:
other— theGtkBitsetto union with
unref¶
Releases a reference on the given GtkBitset.
If the reference was the last, the resources associated to the self are
freed.