Class Bitset

All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class Bitset extends ProxyInstance

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 Gtk.BitsetIter.

The main use case for GtkBitset is implementing complex selections for SelectionModel.

  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a Bitset proxy instance for the provided memory address.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    add(int value)
    Adds value to this Bitset if it wasn't part of it before.
    void
    addRange(int start, int nItems)
    Adds all values from start (inclusive) to start + nItems (exclusive) in self.
    void
    addRangeClosed(int first, int last)
    Adds the closed range last, so first, last and all values in between.
    void
    addRectangle(int start, int width, int height, int stride)
    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.
    boolean
    contains(int value)
    Checks if the given value has been added to this Bitset
    Creates a copy of self.
    void
    Sets this Bitset to be the symmetric difference of this Bitset and other.
    static Bitset
    Creates a new empty bitset.
    boolean
    equals(Bitset other)
    Returns true if this Bitset and other contain the same values.
    int
    Returns the largest value in self.
    The memory layout of the native struct.
    int
    Returns the smallest value in self.
    int
    getNth(int nth)
    Returns the value of the nth item in self.
    long
    Gets the number of values that were added to the set.
    long
    getSizeInRange(int first, int last)
    Gets the number of values that are part of the set from first to last (inclusive).
    static @Nullable Type
    Get the GType of the Bitset class.
    void
    Sets this Bitset to be the intersection of this Bitset and other.
    boolean
    Check if no value is contained in bitset.
    static Bitset
    range(int start, int nItems)
    Creates a bitset with the given range set.
    ref()
    Acquires a reference on the given GtkBitset.
    boolean
    remove(int value)
    Removes value from this Bitset if it was part of it before.
    void
    Removes all values from the bitset so that it is empty again.
    void
    removeRange(int start, int nItems)
    Removes all values from start (inclusive) to start + nItems (exclusive) in self.
    void
    removeRangeClosed(int first, int last)
    Removes the closed range last, so first, last and all values in between.
    void
    removeRectangle(int start, int width, int height, int stride)
    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.
    void
    shiftLeft(int amount)
    Shifts all values in this Bitset to the left by amount.
    void
    shiftRight(int amount)
    Shifts all values in this Bitset to the right by amount.
    void
    splice(int position, int removed, int added)
    This is a support function for GListModel handling, by mirroring the GlistModel::items-changed signal.
    void
    Sets this Bitset to be the subtraction of other from self.
    void
    union(Bitset other)
    Sets this Bitset to be the union of this Bitset and other.
    void
    Releases a reference on the given GtkBitset.

    Methods inherited from class ProxyInstance

    equals, handle, hashCode

    Methods inherited from class Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Bitset

      public Bitset(MemorySegment address)
      Create a Bitset proxy instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the Bitset class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • empty

      public static Bitset empty()
      Creates a new empty bitset.
      Returns:
      A new empty bitset
    • range

      public static Bitset range(int start, int nItems)
      Creates a bitset with the given range set.
      Parameters:
      start - first value to add
      nItems - number of consecutive values to add
      Returns:
      A new bitset
    • add

      public boolean add(int value)
      Adds value to this Bitset if it wasn't part of it before.
      Parameters:
      value - value to add
      Returns:
      true if value was not part of this Bitset and this Bitset was changed
    • addRange

      public void addRange(int start, int nItems)
      Adds all values from start (inclusive) to start + nItems (exclusive) in self.
      Parameters:
      start - first value to add
      nItems - number of consecutive values to add
    • addRangeClosed

      public void addRangeClosed(int first, int last)
      Adds the closed range last, so first, last and all values in between. first must be smaller than last.
      Parameters:
      first - first value to add
      last - 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 given stride and inside that grid, adds a rectangle with the given width and height.
      Parameters:
      start - first value to add
      width - width of the rectangle
      height - height of the rectangle
      stride - row stride of the grid
    • contains

      public boolean contains(int value)
      Checks if the given value has been added to this Bitset
      Parameters:
      value - the value to check
      Returns:
      true if this Bitset contains value
    • copy

      public Bitset copy()
      Creates a copy of self.
      Returns:
      A new bitset that contains the same values as this Bitset
    • difference

      public void difference(Bitset other)

      Sets this Bitset to be the symmetric difference of this Bitset and other.

      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 other to be the same bitset. The bitset will be emptied in that case.

      Parameters:
      other - the GtkBitset to compute the difference from
    • equals

      public boolean equals(Bitset other)
      Returns true if this Bitset and other contain the same values.
      Parameters:
      other - another GtkBitset
      Returns:
      true if this Bitset and other contain the same values
    • getMaximum

      public int getMaximum()

      Returns the largest value in self.

      If this Bitset is empty, 0 is returned.

      Returns:
      The largest value in this Bitset
    • getMinimum

      public int getMinimum()

      Returns the smallest value in self.

      If this Bitset is empty, G_MAXUINT is returned.

      Returns:
      The smallest value in this Bitset
    • getNth

      public int getNth(int 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
      Returns:
      the value of the nth item 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 is G_MAXUINT + 1. Unless you are sure this cannot happen (it can't with GListModel), 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 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 include
      last - the last element to include
      Returns:
      The number of values in the set from first to last.
    • intersect

      public void intersect(Bitset other)

      Sets this Bitset to be the intersection of this Bitset and other.

      In other words, remove all values from this Bitset that are not part of other.

      It is allowed for this Bitset and other to be the same bitset. Nothing will happen in that case.

      Parameters:
      other - the GtkBitset to intersect with
    • isEmpty

      public boolean isEmpty()
      Check if no value is contained in bitset.
      Returns:
      true if this Bitset is empty
    • ref

      public Bitset ref()
      Acquires a reference on the given GtkBitset.
      Returns:
      the GtkBitset with an additional reference
    • remove

      public boolean remove(int value)
      Removes value from this Bitset if it was part of it before.
      Parameters:
      value - value to remove
      Returns:
      true if value was 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 from start (inclusive) to start + nItems (exclusive) in self.
      Parameters:
      start - first value to remove
      nItems - number of consecutive values to remove
    • removeRangeClosed

      public void removeRangeClosed(int first, int last)
      Removes the closed range last, so first, last and all values in between. first must be smaller than last.
      Parameters:
      first - first value to remove
      last - 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 given stride and inside that grid, removes a rectangle with the given width and height.
      Parameters:
      start - first value to remove
      width - width of the rectangle
      height - height of the rectangle
      stride - row stride of the grid
    • shiftLeft

      public void shiftLeft(int amount)

      Shifts all values in this Bitset to the left by amount.

      Values smaller than amount are 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 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

      public void splice(int position, int removed, int added)

      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 slice
      removed - number of values to remove
      added - number of values to add
    • subtract

      public void subtract(Bitset other)

      Sets this Bitset to be the subtraction of other from self.

      In other words, remove all values from this Bitset that are part of other.

      It is allowed for this Bitset and other to be the same bitset. The bitset will be emptied in that case.

      Parameters:
      other - the GtkBitset to subtract
    • union

      public void union(Bitset other)

      Sets this Bitset to be the union of this Bitset and other.

      That is, add all values from other into this Bitset that weren't part of it.

      It is allowed for this Bitset and other to be the same bitset. Nothing will happen in that case.

      Parameters:
      other - the GtkBitset to union with
    • unref

      public void unref()

      Releases a reference on the given GtkBitset.

      If the reference was the last, the resources associated to the this Bitset are freed.