Class Bitset
- All Implemented Interfaces:
Proxy
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 Gtk.BitsetIter.
The main use case for GtkBitset is implementing complex selections for
SelectionModel.
-
Constructor Summary
ConstructorsConstructorDescriptionBitset(MemorySegment address) Create a Bitset proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionbooleanadd(int value) Addsvalueto this Bitset if it wasn't part of it before.voidaddRange(int start, int nItems) Adds all values fromstart(inclusive) tostart+nItems(exclusive) inself.voidaddRangeClosed(int first, int last) Adds the closed rangelast, sofirst,lastand all values in between.voidaddRectangle(int start, int width, int height, int stride) Interprets the values as a 2-dimensional boolean grid with the givenstrideand inside that grid, adds a rectangle with the givenwidthandheight.booleancontains(int value) Checks if the givenvaluehas been added to this Bitsetcopy()Creates a copy ofself.voiddifference(Bitset other) Sets this Bitset to be the symmetric difference of this Bitset andother.static Bitsetempty()Creates a new empty bitset.booleanReturnstrueif this Bitset andothercontain the same values.intReturns the largest value inself.intReturns the smallest value inself.intgetNth(int nth) Returns the value of thenthitem in self.longgetSize()Gets the number of values that were added to the set.longgetSizeInRange(int first, int last) Gets the number of values that are part of the set fromfirsttolast(inclusive).static @Nullable TypegetType()Get the GType of the Bitset classvoidSets this Bitset to be the intersection of this Bitset andother.booleanisEmpty()Check if no value is contained in bitset.static Bitsetrange(int start, int nItems) Creates a bitset with the given range set.ref()Acquires a reference on the givenGtkBitset.booleanremove(int value) Removesvaluefrom this Bitset if it was part of it before.voidRemoves all values from the bitset so that it is empty again.voidremoveRange(int start, int nItems) Removes all values fromstart(inclusive) tostart+nItems(exclusive) inself.voidremoveRangeClosed(int first, int last) Removes the closed rangelast, sofirst,lastand all values in between.voidremoveRectangle(int start, int width, int height, int stride) Interprets the values as a 2-dimensional boolean grid with the givenstrideand inside that grid, removes a rectangle with the givenwidthandheight.voidshiftLeft(int amount) Shifts all values in this Bitset to the left byamount.voidshiftRight(int amount) Shifts all values in this Bitset to the right byamount.voidsplice(int position, int removed, int added) This is a support function forGListModelhandling, by mirroring theGlistModel::items-changedsignal.voidSets this Bitset to be the subtraction ofotherfromself.voidSets this Bitset to be the union of this Bitset andother.voidunref()Releases a reference on the givenGtkBitset.Methods inherited from class org.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
Bitset
Create a Bitset proxy instance for the provided memory address.- Parameters:
address- the memory address of the native object
-
-
Method Details
-
getType
-
empty
-
range
Creates a bitset with the given range set.- Parameters:
start- first value to addnItems- number of consecutive values to add- Returns:
- A new bitset
-
add
public boolean add(int value) Addsvalueto this Bitset if it wasn't part of it before.- Parameters:
value- value to add- Returns:
trueifvaluewas not part of this Bitset and this Bitset was changed
-
addRange
public void addRange(int start, int nItems) Adds all values fromstart(inclusive) tostart+nItems(exclusive) inself.- Parameters:
start- first value to addnItems- number of consecutive values to add
-
addRangeClosed
public void addRangeClosed(int first, int last) Adds the closed rangelast, sofirst,lastand all values in between.firstmust be smaller thanlast.- Parameters:
first- first value to addlast- last value to add
-
addRectangle
public void addRectangle(int start, int width, int height, int stride) Interprets the values as a 2-dimensional boolean grid with the givenstrideand inside that grid, adds a rectangle with the givenwidthandheight.- Parameters:
start- first value to addwidth- width of the rectangleheight- height of the rectanglestride- row stride of the grid
-
contains
public boolean contains(int value) Checks if the givenvaluehas been added to this Bitset- Parameters:
value- the value to check- Returns:
trueif this Bitset containsvalue
-
copy
Creates a copy ofself.- Returns:
- A new bitset that contains the same values as this Bitset
-
difference
Sets this Bitset to be the symmetric difference of this Bitset andother.The symmetric difference is set this Bitset to contain all values that were either contained in this Bitset or in
other,but not in both. This operation is also called an XOR.It is allowed for this Bitset and
otherto be the same bitset. The bitset will be emptied in that case.- Parameters:
other- theGtkBitsetto compute the difference from
-
equals
Returnstrueif this Bitset andothercontain the same values.- Parameters:
other- anotherGtkBitset- Returns:
trueif this Bitset andothercontain the same values
-
getMaximum
public int getMaximum()Returns the largest value inself.If this Bitset is empty, 0 is returned.
- Returns:
- The largest value in this Bitset
-
getMinimum
public int getMinimum()Returns the smallest value inself.If this Bitset is empty,
G_MAXUINTis returned.- Returns:
- The smallest value in this Bitset
-
getNth
public int getNth(int nth) Returns the value of thenthitem in self.If
nthis >= the size ofself,0 is returned.- Parameters:
nth- index of the item to get- Returns:
- the value of the
nthitem in this Bitset
-
getSize
public long getSize()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.- Returns:
- The number of values in the set.
-
getSizeInRange
public long getSizeInRange(int first, int last) Gets the number of values that are part of the set fromfirsttolast(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 includelast- the last element to include- Returns:
- The number of values in the set from
firsttolast.
-
intersect
Sets this Bitset to be the intersection of this Bitset andother.In other words, remove all values from this Bitset that are not part of
other.It is allowed for this Bitset and
otherto be the same bitset. Nothing will happen in that case.- Parameters:
other- theGtkBitsetto intersect with
-
isEmpty
public boolean isEmpty()Check if no value is contained in bitset.- Returns:
trueif this Bitset is empty
-
ref
Acquires a reference on the givenGtkBitset.- Returns:
- the
GtkBitsetwith an additional reference
-
remove
public boolean remove(int value) Removesvaluefrom this Bitset if it was part of it before.- Parameters:
value- value to remove- Returns:
trueifvaluewas part of this Bitset and this Bitset was changed
-
removeAll
public void removeAll()Removes all values from the bitset so that it is empty again. -
removeRange
public void removeRange(int start, int nItems) Removes all values fromstart(inclusive) tostart+nItems(exclusive) inself.- Parameters:
start- first value to removenItems- number of consecutive values to remove
-
removeRangeClosed
public void removeRangeClosed(int first, int last) Removes the closed rangelast, sofirst,lastand all values in between.firstmust be smaller thanlast.- Parameters:
first- first value to removelast- last value to remove
-
removeRectangle
public void removeRectangle(int start, int width, int height, int stride) Interprets the values as a 2-dimensional boolean grid with the givenstrideand inside that grid, removes a rectangle with the givenwidthandheight.- Parameters:
start- first value to removewidth- width of the rectangleheight- height of the rectanglestride- row stride of the grid
-
shiftLeft
public void shiftLeft(int amount) Shifts all values in this Bitset to the left byamount.Values smaller than
amountare discarded.- Parameters:
amount- amount to shift all values to the left
-
shiftRight
public void shiftRight(int amount) Shifts all values in this Bitset to the right byamount.Values that end up too large to be held in a
guintare discarded.- Parameters:
amount- amount to shift all values to the right
-
splice
public void splice(int position, int removed, int added) This is a support function forGListModelhandling, 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 sliceremoved- number of values to removeadded- number of values to add
-
subtract
Sets this Bitset to be the subtraction ofotherfromself.In other words, remove all values from this Bitset that are part of
other.It is allowed for this Bitset and
otherto be the same bitset. The bitset will be emptied in that case.- Parameters:
other- theGtkBitsetto subtract
-
union
Sets this Bitset to be the union of this Bitset andother.That is, add all values from
otherinto this Bitset that weren't part of it.It is allowed for this Bitset and
otherto be the same bitset. Nothing will happen in that case.- Parameters:
other- theGtkBitsetto union with
-
unref
public void unref()Releases a reference on the givenGtkBitset.If the reference was the last, the resources associated to the this Bitset are freed.
-