| Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
GI.Gtk.Structs.Bitset
Contents
Description
Bitset is a data structure for representing 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. Bitset 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 Bitset 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 Methods 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 Methods 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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> m Bool | Returns: |
Adds value to self if it wasn't part of it before.
addRange
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> Word32 |
|
| -> m () |
Adds all values from start (inclusive) to start + nItems
(exclusive) in self.
addRangeClosed
Arguments
| :: (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
Arguments
| :: (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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> m Bool | Returns: |
Checks if the given value has been added to self
copy
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> m Bitset | Returns: A new bitset that contains the same
values as |
Creates a copy of self.
difference
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Bitset |
|
| -> m () |
Sets self to be the symmetric difference of self and other, that
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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Bitset |
|
| -> m Bool | Returns: |
Returns True if self and other contain the same values.
getMaximum
Arguments
| :: (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
Arguments
| :: (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
Arguments
| :: (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
Arguments
| :: (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 ListModel), be sure to use a 64bit type.
getSizeInRange
Arguments
| :: (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 ListModel), be sure to use a 64bit type.
intersect
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Bitset |
|
| -> m () |
Sets self to be the intersection of self and other, that is 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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> m Bool | Returns: |
Check if no value is contained in bitset.
newEmpty
Arguments
| :: (HasCallStack, MonadIO m) | |
| => m Bitset | Returns: A new empty bitset |
Creates a new empty bitset.
newRange
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Word32 |
|
| -> Word32 |
|
| -> m Bitset | Returns: A new bitset |
Creates a bitset with the given range set.
ref
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> m Bitset | Returns: the |
Acquires a reference on the given Bitset.
remove
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> m Bool | Returns: |
Removes value from self if it was part of it before.
removeAll
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> m () |
Removes all values from the bitset so that it is empty again.
removeRange
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> Word32 |
|
| -> m () |
Removes all values from start (inclusive) to start + nItems (exclusive)
in self.
removeRangeClosed
bitsetRemoveRangeClosed Source #
Arguments
| :: (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 #
Arguments
| :: (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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> m () |
Shifts all values in self to the left by amount. Values
smaller than amount are discarded.
shiftRight
Arguments
| :: (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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Word32 |
|
| -> Word32 |
|
| -> Word32 |
|
| -> m () |
This is a support function for ListModel 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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> Bitset |
|
| -> m () |
Sets self to be the subtraction of other from self, that is 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
Arguments
| :: (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
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Bitset |
|
| -> m () |
Releases a reference on the given Bitset.
If the reference was the last, the resources associated to the self are
freed.