Zycore  1.2.0.0
Classes | Typedefs | Functions
Bitset.h File Reference
#include <Zycore/Allocator.h>
#include <Zycore/Status.h>
#include <Zycore/Types.h>
#include <Zycore/Vector.h>
Include dependency graph for Bitset.h:

Go to the source code of this file.

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 ZyanBitsetInitEx (ZyanBitset *bitset, ZyanUSize count, ZyanAllocator *allocator, ZyanU8 growth_factor, ZyanU8 shrink_threshold)
 
ZYCORE_EXPORT ZyanStatus ZyanBitsetInitBuffer (ZyanBitset *bitset, ZyanUSize count, void *buffer, ZyanUSize capacity)
 
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 ZyanBitsetAssign (ZyanBitset *bitset, ZyanUSize index, ZyanBool value)
 
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

◆ ZyanBitset

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.

◆ ZyanBitsetByteOperation

typedef ZyanStatus(* ZyanBitsetByteOperation) (ZyanU8 *v1, const ZyanU8 *v2)

Defines the ZyanBitsetByteOperation function prototype.

Parameters
v1A pointer to the first byte. This value receives the result after performing the desired operation.
v2A 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

◆ ZyanBitsetAll()

ZYCORE_EXPORT ZyanStatus ZyanBitsetAll ( const ZyanBitset bitset)

Checks, if all bits of the given bitset are set.

Parameters
bitsetA 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.

◆ ZyanBitsetAND()

ZYCORE_EXPORT ZyanStatus ZyanBitsetAND ( ZyanBitset destination,
const ZyanBitset source 
)

Performs a logical AND operation on the given ZyanBitset instances.

Parameters
destinationA pointer to the ZyanBitset instance that is used as the first input and as the destination.
sourceA 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.

◆ ZyanBitsetAny()

ZYCORE_EXPORT ZyanStatus ZyanBitsetAny ( const ZyanBitset bitset)

Checks, if at least one bit of the given bitset is set.

Parameters
bitsetA 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.

◆ ZyanBitsetAssign()

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
bitsetA pointer to the ZyanBitset instance.
indexThe bit index.
valueThe new value.
Returns
A zyan status code.

◆ ZyanBitsetClear()

ZYCORE_EXPORT ZyanStatus ZyanBitsetClear ( ZyanBitset bitset)

Deletes all bits of the given ZyanBitset instance.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetCount()

ZYCORE_EXPORT ZyanStatus ZyanBitsetCount ( const ZyanBitset bitset,
ZyanUSize *  count 
)

Returns the amount of bits set in the given bitset.

Parameters
bitsetA pointer to the ZyanBitset instance.
countReceives the amount of bits set in the given bitset.
Returns
A zyan status code.

◆ ZyanBitsetDestroy()

ZYCORE_EXPORT ZyanStatus ZyanBitsetDestroy ( ZyanBitset bitset)

Destroys the given ZyanBitset instance.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetFlip()

ZYCORE_EXPORT ZyanStatus ZyanBitsetFlip ( ZyanBitset bitset)

Flips all bits of the given ZyanBitset instance.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetGetCapacity()

ZYCORE_EXPORT ZyanStatus ZyanBitsetGetCapacity ( const ZyanBitset bitset,
ZyanUSize *  capacity 
)

Returns the current capacity of the bitset in bits.

Parameters
bitsetA pointer to the ZyanBitset instance.
capacityReceives the size of the bitset in bits.
Returns
A zyan status code.

◆ ZyanBitsetGetCapacityBytes()

ZYCORE_EXPORT ZyanStatus ZyanBitsetGetCapacityBytes ( const ZyanBitset bitset,
ZyanUSize *  capacity 
)

Returns the current capacity of the bitset in bytes.

Parameters
bitsetA pointer to the ZyanBitset instance.
capacityReceives the size of the bitset in bytes.
Returns
A zyan status code.

◆ ZyanBitsetGetSize()

ZYCORE_EXPORT ZyanStatus ZyanBitsetGetSize ( const ZyanBitset bitset,
ZyanUSize *  size 
)

Returns the current size of the bitset in bits.

Parameters
bitsetA pointer to the ZyanBitset instance.
sizeReceives the size of the bitset in bits.
Returns
A zyan status code.

◆ ZyanBitsetGetSizeBytes()

ZYCORE_EXPORT ZyanStatus ZyanBitsetGetSizeBytes ( const ZyanBitset bitset,
ZyanUSize *  size 
)

Returns the current size of the bitset in bytes.

Parameters
bitsetA pointer to the ZyanBitset instance.
sizeReceives the size of the bitset in bytes.
Returns
A zyan status code.

◆ ZyanBitsetInit()

ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanBitsetInit ( ZyanBitset bitset,
ZyanUSize  count 
)

Initializes the given ZyanBitset instance.

Parameters
bitsetA pointer to the ZyanBitset instance.
countThe 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.

◆ ZyanBitsetInitBuffer()

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
bitsetA pointer to the ZyanBitset instance.
countThe initial amount of bits.
bufferA pointer to the buffer that is used as storage for the bits.
capacityThe maximum capacity (number of bytes) of the buffer.
Returns
A zyan status code.

◆ ZyanBitsetInitEx()

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
bitsetA pointer to the ZyanBitset instance.
countThe initial amount of bits.
allocatorA pointer to a ZyanAllocator instance.
growth_factorThe growth factor.
shrink_thresholdThe shrink threshold.
Returns
A zyan status code.

A growth factor of 1 disables overallocation and a shrink threshold of 0 disables dynamic shrinking.

◆ ZyanBitsetNone()

ZYCORE_EXPORT ZyanStatus ZyanBitsetNone ( const ZyanBitset bitset)

Checks, if none bits of the given bitset are set.

Parameters
bitsetA 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.

◆ ZyanBitsetOR()

ZYCORE_EXPORT ZyanStatus ZyanBitsetOR ( ZyanBitset destination,
const ZyanBitset source 
)

Performs a logical OR operation on the given ZyanBitset instances.

Parameters
destinationA pointer to the ZyanBitset instance that is used as the first input and as the destination.
sourceA 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.

◆ ZyanBitsetPerformByteOperation()

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
destinationA pointer to the ZyanBitset instance that is used as the first input and as the destination.
sourceA pointer to the ZyanBitset instance that is used as the second input.
operationA 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.

◆ ZyanBitsetPop()

ZYCORE_EXPORT ZyanStatus ZyanBitsetPop ( ZyanBitset bitset)

Removes the last bit of the bitset.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetPush()

ZYCORE_EXPORT ZyanStatus ZyanBitsetPush ( ZyanBitset bitset,
ZyanBool  value 
)

Adds a new bit at the end of the bitset.

Parameters
bitsetA pointer to the ZyanBitset instance.
valueThe value of the new bit.
Returns
A zyan status code.

◆ ZyanBitsetReserve()

ZYCORE_EXPORT ZyanStatus ZyanBitsetReserve ( ZyanBitset bitset,
ZyanUSize  count 
)

Changes the capacity of the given ZyanBitset instance.

Parameters
bitsetA pointer to the ZyanBitset instance.
countThe new capacity (number of bits).
Returns
A zyan status code.

◆ ZyanBitsetReset()

ZYCORE_EXPORT ZyanStatus ZyanBitsetReset ( ZyanBitset bitset,
ZyanUSize  index 
)

Sets the bit at index of the given ZyanBitset instance to 0.

Parameters
bitsetA pointer to the ZyanBitset instance.
indexThe bit index.
Returns
A zyan status code.

◆ ZyanBitsetResetAll()

ZYCORE_EXPORT ZyanStatus ZyanBitsetResetAll ( ZyanBitset bitset)

Sets all bits of the given ZyanBitset instance to 0.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetSet()

ZYCORE_EXPORT ZyanStatus ZyanBitsetSet ( ZyanBitset bitset,
ZyanUSize  index 
)

Sets the bit at index of the given ZyanBitset instance to 1.

Parameters
bitsetA pointer to the ZyanBitset instance.
indexThe bit index.
Returns
A zyan status code.

◆ ZyanBitsetSetAll()

ZYCORE_EXPORT ZyanStatus ZyanBitsetSetAll ( ZyanBitset bitset)

Sets all bits of the given ZyanBitset instance to 1.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetShrinkToFit()

ZYCORE_EXPORT ZyanStatus ZyanBitsetShrinkToFit ( ZyanBitset bitset)

Shrinks the capacity of the given bitset to match it's size.

Parameters
bitsetA pointer to the ZyanBitset instance.
Returns
A zyan status code.

◆ ZyanBitsetTest()

ZYCORE_EXPORT ZyanStatus ZyanBitsetTest ( ZyanBitset bitset,
ZyanUSize  index 
)

Returns the value of the bit at index.

Parameters
bitsetA pointer to the ZyanBitset instance.
indexThe 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.

◆ ZyanBitsetTestLSB()

ZYCORE_EXPORT ZyanStatus ZyanBitsetTestLSB ( ZyanBitset bitset)

Returns the value of the least significant bit.

Parameters
bitsetA 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.

◆ ZyanBitsetTestMSB()

ZYCORE_EXPORT ZyanStatus ZyanBitsetTestMSB ( ZyanBitset bitset)

Returns the value of the most significant bit.

Parameters
bitsetA 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.

◆ ZyanBitsetToggle()

ZYCORE_EXPORT ZyanStatus ZyanBitsetToggle ( ZyanBitset bitset,
ZyanUSize  index 
)

Toggles the bit at index of the given ZyanBitset instance.

Parameters
bitsetA pointer to the ZyanBitset instance.
indexThe bit index.
Returns
A zyan status code.

◆ ZyanBitsetXOR()

ZYCORE_EXPORT ZyanStatus ZyanBitsetXOR ( ZyanBitset destination,
const ZyanBitset source 
)

Performs a logical XOR operation on the given ZyanBitset instances.

Parameters
destinationA pointer to the ZyanBitset instance that is used as the first input and as the destination.
sourceA 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.