Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
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 [structgtk
.BitsetIter].
The main use case for GtkBitset
is implementing complex selections for
SelectionModel
.
Synopsis
- newtype Bitset = Bitset (ManagedPtr Bitset)
- bitsetAdd :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> m Bool
- bitsetAddRange :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> m ()
- bitsetAddRangeClosed :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> m ()
- bitsetAddRectangle :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> Word32 -> Word32 -> m ()
- bitsetContains :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> m Bool
- bitsetCopy :: (HasCallStack, MonadIO m) => Bitset -> m Bitset
- bitsetDifference :: (HasCallStack, MonadIO m) => Bitset -> Bitset -> m ()
- bitsetEquals :: (HasCallStack, MonadIO m) => Bitset -> Bitset -> m Bool
- bitsetGetMaximum :: (HasCallStack, MonadIO m) => Bitset -> m Word32
- bitsetGetMinimum :: (HasCallStack, MonadIO m) => Bitset -> m Word32
- bitsetGetNth :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> m Word32
- bitsetGetSize :: (HasCallStack, MonadIO m) => Bitset -> m Word64
- bitsetGetSizeInRange :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> m Word64
- bitsetIntersect :: (HasCallStack, MonadIO m) => Bitset -> Bitset -> m ()
- bitsetIsEmpty :: (HasCallStack, MonadIO m) => Bitset -> m Bool
- bitsetNewEmpty :: (HasCallStack, MonadIO m) => m Bitset
- bitsetNewRange :: (HasCallStack, MonadIO m) => Word32 -> Word32 -> m Bitset
- bitsetRef :: (HasCallStack, MonadIO m) => Bitset -> m Bitset
- bitsetRemove :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> m Bool
- bitsetRemoveAll :: (HasCallStack, MonadIO m) => Bitset -> m ()
- bitsetRemoveRange :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> m ()
- bitsetRemoveRangeClosed :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> m ()
- bitsetRemoveRectangle :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> Word32 -> Word32 -> m ()
- bitsetShiftLeft :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> m ()
- bitsetShiftRight :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> m ()
- bitsetSplice :: (HasCallStack, MonadIO m) => Bitset -> Word32 -> Word32 -> Word32 -> m ()
- bitsetSubtract :: (HasCallStack, MonadIO m) => Bitset -> Bitset -> m ()
- bitsetUnion :: (HasCallStack, MonadIO m) => Bitset -> Bitset -> m ()
- bitsetUnref :: (HasCallStack, MonadIO m) => Bitset -> m ()
Exported types
Memory-managed wrapper type.
Instances
Eq Bitset Source # | |
GBoxed Bitset Source # | |
Defined in GI.Gtk.Structs.Bitset | |
ManagedPtrNewtype Bitset Source # | |
Defined in GI.Gtk.Structs.Bitset toManagedPtr :: Bitset -> ManagedPtr Bitset | |
TypedObject Bitset Source # | |
Defined in GI.Gtk.Structs.Bitset | |
HasParentTypes Bitset Source # | |
Defined in GI.Gtk.Structs.Bitset | |
IsGValue (Maybe Bitset) Source # | Convert |
Defined in GI.Gtk.Structs.Bitset gvalueGType_ :: IO GType gvalueSet_ :: Ptr GValue -> Maybe Bitset -> IO () gvalueGet_ :: Ptr GValue -> IO (Maybe Bitset) | |
type ParentTypes Bitset Source # | |
Defined in GI.Gtk.Structs.Bitset |
Methods
Click to display all available methods, including inherited ones
Methods
add, addRange, addRangeClosed, addRectangle, contains, copy, difference, equals, intersect, isEmpty, ref, remove, removeAll, removeRange, removeRangeClosed, removeRectangle, shiftLeft, shiftRight, splice, subtract, union, unref.
Getters
getMaximum, getMinimum, getNth, getSize, getSizeInRange.
Setters
None.
add
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> m Bool | Returns: |
Adds value
to self
if it wasn't part of it before.
addRange
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
Adds all values from start
(inclusive) to start
+ nItems
(exclusive) in self
.
addRangeClosed
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
Adds the closed range [first
, last
], so first
, last
and all
values in between. first
must be smaller than last
.
addRectangle
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
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
.
contains
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> m Bool | Returns: |
Checks if the given value
has been added to self
copy
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m Bitset | Returns: A new bitset that contains the same
values as |
Creates a copy of self
.
difference
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Bitset |
|
-> m () |
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.
equals
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Bitset |
|
-> m Bool | Returns: |
Returns True
if self
and other
contain the same values.
getMaximum
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m Word32 | Returns: The largest value in |
Returns the largest value in self
.
If self
is empty, 0 is returned.
getMinimum
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m Word32 | Returns: The smallest value in |
Returns the smallest value in self
.
If self
is empty, G_MAXUINT
is returned.
getNth
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> m Word32 | Returns: the value of the |
Returns the value of the nth
item in self.
If nth
is >= the size of self
, 0 is returned.
getSize
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m Word64 | Returns: The number of values in the set. |
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.
getSizeInRange
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> m Word64 | Returns: The number of values in the set from |
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.
intersect
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Bitset |
|
-> m () |
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.
isEmpty
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m Bool | Returns: |
Check if no value is contained in bitset.
newEmpty
:: (HasCallStack, MonadIO m) | |
=> m Bitset | Returns: A new empty bitset |
Creates a new empty bitset.
newRange
:: (HasCallStack, MonadIO m) | |
=> Word32 |
|
-> Word32 |
|
-> m Bitset | Returns: A new bitset |
Creates a bitset with the given range set.
ref
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m Bitset | Returns: the |
Acquires a reference on the given GtkBitset
.
remove
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> m Bool | Returns: |
Removes value
from self
if it was part of it before.
removeAll
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m () |
Removes all values from the bitset so that it is empty again.
removeRange
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
Removes all values from start
(inclusive) to start
+ nItems
(exclusive)
in self
.
removeRangeClosed
bitsetRemoveRangeClosed Source #
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
Removes the closed range [first
, last
], so first
, last
and all
values in between. first
must be smaller than last
.
removeRectangle
bitsetRemoveRectangle Source #
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
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
.
shiftLeft
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> m () |
Shifts all values in self
to the left by amount
.
Values smaller than amount
are discarded.
shiftRight
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> m () |
Shifts all values in self
to the right by amount
.
Values that end up too large to be held in a guint
are discarded.
splice
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Word32 |
|
-> Word32 |
|
-> Word32 |
|
-> m () |
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.
subtract
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Bitset |
|
-> m () |
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.
union
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> Bitset |
|
-> m () |
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.
unref
:: (HasCallStack, MonadIO m) | |
=> Bitset |
|
-> m () |
Releases a reference on the given GtkBitset
.
If the reference was the last, the resources associated to the self
are
freed.