Loading...
Searching...
No Matches
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

  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

## ZyanBitsetAll()

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.

## ZyanBitsetAND()

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.

## ZyanBitsetAny()

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.

## 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

  bitset | A pointer to the ZyanBitset instance.
  index | The bit index.
  value | The new value.

Returns
  A zyan status code.

## ZyanBitsetClear()

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.

## ZyanBitsetCount()

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.

## ZyanBitsetDestroy()

ZYCORE_EXPORT ZyanStatus ZyanBitsetDestroy | ( | ZyanBitset * | bitset | ) |

Destroys the given ZyanBitset instance.

Parameters

  bitset | A 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

  bitset | A 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

  bitset | A pointer to the ZyanBitset instance.
  capacity | Receives 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

  bitset | A pointer to the ZyanBitset instance.
  capacity | Receives 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

  bitset | A pointer to the ZyanBitset instance.
  size | Receives 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

  bitset | A pointer to the ZyanBitset instance.
  size | Receives 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

  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.

## 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

  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.

## 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

  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.

## ZyanBitsetNone()

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.

## ZyanBitsetOR()

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.

## 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

  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.

## ZyanBitsetPop()

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.

## ZyanBitsetPush()

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.

## ZyanBitsetReserve()

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.

## ZyanBitsetReset()

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.

## ZyanBitsetResetAll()

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.

## ZyanBitsetSet()

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.

## ZyanBitsetSetAll()

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.

## ZyanBitsetShrinkToFit()

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.

## ZyanBitsetTest()

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.

## ZyanBitsetTestLSB()

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.

## ZyanBitsetTestMSB()

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.

## ZyanBitsetToggle()

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.

## ZyanBitsetXOR()

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.