Bitset#
- class Bitset(*args, **kwargs)#
A GtkBitset represents 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#
Methods#
- class Bitset
- add(value: int) bool#
Adds
valuetoselfif it wasn’t part of it before.- Parameters:
value – value to add
- add_range(start: int, n_items: int) None#
Adds all values from
start(inclusive) tostart+n_items(exclusive) inself.- Parameters:
start – first value to add
n_items – number of consecutive values to add
- add_range_closed(first: int, last: int) None#
Adds the closed range [
first,last], sofirst,lastand all values in between.firstmust be smaller thanlast.- Parameters:
first – first value to add
last – last value to add
- add_rectangle(start: int, width: int, height: int, stride: int) None#
Interprets the values as a 2-dimensional boolean grid with the given
strideand inside that grid, adds a rectangle with the givenwidthandheight.- Parameters:
start – first value to add
width – width of the rectangle
height – height of the rectangle
stride – row stride of the grid
- contains(value: int) bool#
Checks if the given
valuehas been added toself- Parameters:
value – the value to check
- difference(other: Bitset) None#
Sets
selfto be the symmetric difference ofselfandother.The symmetric difference is set
selfto contain all values that were either contained inselfor inother, but not in both. This operation is also called an XOR.It is allowed for
selfandotherto be the same bitset. The bitset will be emptied in that case.- Parameters:
other – the
GtkBitsetto compute the difference from
- equals(other: Bitset) bool#
Returns
Trueifselfandothercontain the same values.- Parameters:
other – another
GtkBitset
- get_nth(nth: int) int#
Returns the value of the
nthitem in self.If
nthis >= the size ofself, 0 is returned.- Parameters:
nth – index of the item to get
- get_size() int#
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 isG_MAXUINT + 1. Unless you are sure this cannot happen (it can’t withGListModel), be sure to use a 64bit type.
- get_size_in_range(first: int, last: int) int#
Gets the number of values that are part of the set from
firsttolast(inclusive).Note that this function returns a
guint64, because when all values are set, the return value isG_MAXUINT + 1. Unless you are sure this cannot happen (it can’t withGListModel), be sure to use a 64bit type.- Parameters:
first – the first element to include
last – the last element to include
- intersect(other: Bitset) None#
Sets
selfto be the intersection ofselfandother.In other words, remove all values from
selfthat are not part ofother.It is allowed for
selfandotherto be the same bitset. Nothing will happen in that case.- Parameters:
other – the
GtkBitsetto intersect with
- remove(value: int) bool#
Removes
valuefromselfif it was part of it before.- Parameters:
value – value to remove
- remove_range(start: int, n_items: int) None#
Removes all values from
start(inclusive) tostart+n_items(exclusive) inself.- Parameters:
start – first value to remove
n_items – number of consecutive values to remove
- remove_range_closed(first: int, last: int) None#
Removes the closed range [
first,last], sofirst,lastand all values in between.firstmust be smaller thanlast.- Parameters:
first – first value to remove
last – last value to remove
- remove_rectangle(start: int, width: int, height: int, stride: int) None#
Interprets the values as a 2-dimensional boolean grid with the given
strideand inside that grid, removes a rectangle with the givenwidthandheight.- Parameters:
start – first value to remove
width – width of the rectangle
height – height of the rectangle
stride – row stride of the grid
- shift_left(amount: int) None#
Shifts all values in
selfto the left byamount.Values smaller than
amountare discarded.- Parameters:
amount – amount to shift all values to the left
- shift_right(amount: int) None#
Shifts all values in
selfto the right byamount.Values that end up too large to be held in a
intare discarded.- Parameters:
amount – amount to shift all values to the right
- splice(position: int, removed: int, added: int) None#
This is a support function for
GListModelhandling, by mirroring theGlistModel::items-changedsignal.First, it “cuts” the values from
positiontoremovedfrom the bitset. That is, it removes all those values and shifts all larger values to the left byremovedplaces.Then, it “pastes” new room into the bitset by shifting all values larger than
positionbyaddedspaces to the right. This frees up space that can then be filled.- Parameters:
position – position at which to slice
removed – number of values to remove
added – number of values to add