Bitset.h3
Usage
Classes
struct ZyanBitset_
Typedefs
typedef struct
ZyanBitset_
ZyanBitset
typedef ZyanStatus(*
ZyanBitsetByteOperation)
(ZyanU8
*v1,
const
ZyanU8
*v2)
Functions
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC
ZyanStatus
ZyanBitsetInit
(ZyanBitset
*bitset,
ZyanUSize
count)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetDestroy
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetPerformByteOperation
(ZyanBitset
*destination,
const
ZyanBitset
*source,
ZyanBitsetByteOperation
operation)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetAND
(ZyanBitset
*destination,
const
ZyanBitset
*source)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetOR
(ZyanBitset
*destination,
const
ZyanBitset
*source)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetXOR
(ZyanBitset
*destination,
const
ZyanBitset
*source)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetFlip
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetSet
(ZyanBitset
*bitset,
ZyanUSize
index)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetReset
(ZyanBitset
*bitset,
ZyanUSize
index)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetToggle
(ZyanBitset
*bitset,
ZyanUSize
index)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetTest
(ZyanBitset
*bitset,
ZyanUSize
index)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetTestMSB
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetTestLSB
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetSetAll
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetResetAll
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetPush
(ZyanBitset
*bitset,
ZyanBool
value)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetPop
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetClear
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetReserve
(ZyanBitset
*bitset,
ZyanUSize
count)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetShrinkToFit
(ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetGetSize
(const
ZyanBitset
*bitset,
ZyanUSize
*size)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetGetCapacity
(const
ZyanBitset
*bitset,
ZyanUSize
*capacity)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetGetSizeBytes
(const
ZyanBitset
*bitset,
ZyanUSize
*size)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetGetCapacityBytes
(const
ZyanBitset
*bitset,
ZyanUSize
*capacity)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetCount
(const
ZyanBitset
*bitset,
ZyanUSize
*count)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetAll
(const
ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetAny
(const
ZyanBitset
*bitset)
ZYCORE_EXPORT ZyanStatus
ZyanBitsetNone
(const
ZyanBitset
*bitset)
Detailed Description
Implements the bitset class.
Typedef Documentation
typedef struct ZyanBitset_ ZyanBitset
Defines the ZyanVector struct.
All fields in this struct should be considered as 'private'. Any changes may lead to unexpected behavior.
typedef ZyanStatus(* ZyanBitsetByteOperation) (ZyanU8 *v1, const ZyanU8 *v2)
Defines the ZyanBitsetByteOperation function prototype.
Parameters
v1 A pointer to the first byte. This value receives the result after performing the desired operation.
v2 A pointer to the second byte.
Returns
A zyan status code.
This function is used to perform byte-wise operations on two ZyanBitset instances.
Function Documentation
ZYCORE_EXPORT ZyanStatus ZyanBitsetAll (const ZyanBitset * bitset)
Checks, if all bits of the given bitset are set.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
ZYAN_STATUS_TRUE, if all bits are set, ZYAN_STATUS_FALSE, if not. Another zyan status code, if an error occurred.
ZYCORE_EXPORT ZyanStatus ZyanBitsetAND (ZyanBitset * destination, const ZyanBitset * source)
Performs a logical AND operation on the given ZyanBitset instances.
Parameters
destination A pointer to the ZyanBitset instance that is used as the first input and as the destination.
source A pointer to the ZyanBitset instance that is used as the second input.
Returns
A zyan status code.
If the destination bitmask contains more bits than the source one, the state of the remaining bits will be undefined.
ZYCORE_EXPORT ZyanStatus ZyanBitsetAny (const ZyanBitset * bitset)
Checks, if at least one bit of the given bitset is set.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
ZYAN_STATUS_TRUE, if at least one bit is set, ZYAN_STATUS_FALSE, if not. Another zyan status code, if an error occurred.
ZYCORE_EXPORT ZyanStatus ZyanBitsetAssign (ZyanBitset * bitset, ZyanUSize index, ZyanBool value)
Sets the bit at index of the given ZyanBitset instance to the specified value.
Parameters
bitset A pointer to the ZyanBitset instance.
index The bit index.
value The new value.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetClear (ZyanBitset * bitset)
Deletes all bits of the given ZyanBitset instance.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetCount (const ZyanBitset * bitset, ZyanUSize * count)
Returns the amount of bits set in the given bitset.
Parameters
bitset A pointer to the ZyanBitset instance.
count Receives the amount of bits set in the given bitset.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetDestroy (ZyanBitset * bitset)
Destroys the given ZyanBitset instance.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetFlip (ZyanBitset * bitset)
Flips all bits of the given ZyanBitset instance.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetCapacity (const ZyanBitset * bitset, ZyanUSize * capacity)
Returns the current capacity of the bitset in bits.
Parameters
bitset A pointer to the ZyanBitset instance.
capacity Receives the size of the bitset in bits.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetCapacityBytes (const ZyanBitset * bitset, ZyanUSize * capacity)
Returns the current capacity of the bitset in bytes.
Parameters
bitset A pointer to the ZyanBitset instance.
capacity Receives the size of the bitset in bytes.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetSize (const ZyanBitset * bitset, ZyanUSize * size)
Returns the current size of the bitset in bits.
Parameters
bitset A pointer to the ZyanBitset instance.
size Receives the size of the bitset in bits.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetSizeBytes (const ZyanBitset * bitset, ZyanUSize * size)
Returns the current size of the bitset in bytes.
Parameters
bitset A pointer to the ZyanBitset instance.
size Receives the size of the bitset in bytes.
Returns
A zyan status code.
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanBitsetInit (ZyanBitset * bitset, ZyanUSize count)
Initializes the given ZyanBitset instance.
Parameters
bitset A pointer to the ZyanBitset instance.
count The initial amount of bits.
Returns
A zyan status code.
The space for the bitset is dynamically allocated by the default allocator using the default growth factor and the default shrink threshold.
ZYCORE_EXPORT ZyanStatus ZyanBitsetInitBuffer (ZyanBitset * bitset, ZyanUSize count, void * buffer, ZyanUSize capacity)
Initializes the given ZyanBitset instance and configures it to use a custom user defined buffer with a fixed size.
Parameters
bitset A pointer to the ZyanBitset instance.
count The initial amount of bits.
buffer A pointer to the buffer that is used as storage for the bits.
capacity The maximum capacity (number of bytes) of the buffer.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetInitEx (ZyanBitset * bitset, ZyanUSize count, ZyanAllocator * allocator, ZyanU8 growth_factor, ZyanU8 shrink_threshold)
Initializes the given ZyanBitset instance and sets a custom allocator and memory allocation/deallocation parameters.
Parameters
bitset A pointer to the ZyanBitset instance.
count The initial amount of bits.
allocator A pointer to a ZyanAllocator instance.
growth_factor The growth factor.
shrink_threshold The shrink threshold.
Returns
A zyan status code.
A growth factor of 1 disables overallocation and a shrink threshold of 0 disables dynamic shrinking.
ZYCORE_EXPORT ZyanStatus ZyanBitsetNone (const ZyanBitset * bitset)
Checks, if none bits of the given bitset are set.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
ZYAN_STATUS_TRUE, if none bits are set, ZYAN_STATUS_FALSE, if not. Another zyan status code, if an error occurred.
ZYCORE_EXPORT ZyanStatus ZyanBitsetOR (ZyanBitset * destination, const ZyanBitset * source)
Performs a logical OR operation on the given ZyanBitset instances.
Parameters
destination A pointer to the ZyanBitset instance that is used as the first input and as the destination.
source A pointer to the ZyanBitset instance that is used as the second input.
Returns
A zyan status code.
If the destination bitmask contains more bits than the source one, the state of the remaining bits will be undefined.
ZYCORE_EXPORT ZyanStatus ZyanBitsetPerformByteOperation (ZyanBitset * destination, const ZyanBitset * source, ZyanBitsetByteOperation operation)
Performs a byte-wise operation for every byte in the given ZyanBitset instances.
Parameters
destination A pointer to the ZyanBitset instance that is used as the first input and as the destination.
source A pointer to the ZyanBitset instance that is used as the second input.
operation A pointer to the function that performs the desired operation.
Returns
A zyan status code.
The operation callback is invoked once for every byte in the smallest of the ZyanBitset instances.
ZYCORE_EXPORT ZyanStatus ZyanBitsetPop (ZyanBitset * bitset)
Removes the last bit of the bitset.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetPush (ZyanBitset * bitset, ZyanBool value)
Adds a new bit at the end of the bitset.
Parameters
bitset A pointer to the ZyanBitset instance.
value The value of the new bit.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetReserve (ZyanBitset * bitset, ZyanUSize count)
Changes the capacity of the given ZyanBitset instance.
Parameters
bitset A pointer to the ZyanBitset instance.
count The new capacity (number of bits).
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetReset (ZyanBitset * bitset, ZyanUSize index)
Sets the bit at index of the given ZyanBitset instance to 0.
Parameters
bitset A pointer to the ZyanBitset instance.
index The bit index.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetResetAll (ZyanBitset * bitset)
Sets all bits of the given ZyanBitset instance to 0.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetSet (ZyanBitset * bitset, ZyanUSize index)
Sets the bit at index of the given ZyanBitset instance to 1.
Parameters
bitset A pointer to the ZyanBitset instance.
index The bit index.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetSetAll (ZyanBitset * bitset)
Sets all bits of the given ZyanBitset instance to 1.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetShrinkToFit (ZyanBitset * bitset)
Shrinks the capacity of the given bitset to match it's size.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetTest (ZyanBitset * bitset, ZyanUSize index)
Returns the value of the bit at index.
Parameters
bitset A pointer to the ZyanBitset instance.
index The bit index.
Returns
ZYAN_STATUS_TRUE, if the bit is set or ZYAN_STATUS_FALSE, if not, Another zyan status code, if an error occurred.
ZYCORE_EXPORT ZyanStatus ZyanBitsetTestLSB (ZyanBitset * bitset)
Returns the value of the least significant bit.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
ZYAN_STATUS_TRUE, if the bit is set or ZYAN_STATUS_FALSE, if not. Another zyan status code, if an error occurred.
ZYCORE_EXPORT ZyanStatus ZyanBitsetTestMSB (ZyanBitset * bitset)
Returns the value of the most significant bit.
Parameters
bitset A pointer to the ZyanBitset instance.
Returns
ZYAN_STATUS_TRUE, if the bit is set or ZYAN_STATUS_FALSE, if not. Another zyan status code, if an error occurred.
ZYCORE_EXPORT ZyanStatus ZyanBitsetToggle (ZyanBitset * bitset, ZyanUSize index)
Toggles the bit at index of the given ZyanBitset instance.
Parameters
bitset A pointer to the ZyanBitset instance.
index The bit index.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanBitsetXOR (ZyanBitset * destination, const ZyanBitset * source)
Performs a logical XOR operation on the given ZyanBitset instances.
Parameters
destination A pointer to the ZyanBitset instance that is used as the first input and as the destination.
source A pointer to the ZyanBitset instance that is used as the second input.
Returns
A zyan status code.
If the destination bitmask contains more bits than the source one, the state of the remaining bits will be undefined.