Zycore
1.2.0.0
|
#include <Zycore/Allocator.h>
#include <Zycore/Status.h>
#include <Zycore/Types.h>
#include <Zycore/Vector.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) |
Implements the bitset class.
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.
v1 | A pointer to the first byte. This value receives the result after performing the desired operation. |
v2 | A pointer to the second byte. |
This function is used to perform byte-wise operations on two ZyanBitset
instances.
ZYCORE_EXPORT ZyanStatus ZyanBitsetAll | ( | const ZyanBitset * | bitset | ) |
Checks, if all bits of the given bitset are set.
bitset | A pointer to the ZyanBitset instance. |
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.
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. |
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.
bitset | A pointer to the ZyanBitset instance. |
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
.
bitset | A pointer to the ZyanBitset instance. |
index | The bit index. |
value | The new value. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetClear | ( | ZyanBitset * | bitset | ) |
Deletes all bits of the given ZyanBitset
instance.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetCount | ( | const ZyanBitset * | bitset, |
ZyanUSize * | count | ||
) |
Returns the amount of bits set in the given bitset.
bitset | A pointer to the ZyanBitset instance. |
count | Receives the amount of bits set in the given bitset. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetDestroy | ( | ZyanBitset * | bitset | ) |
Destroys the given ZyanBitset
instance.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetFlip | ( | ZyanBitset * | bitset | ) |
Flips all bits of the given ZyanBitset
instance.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetCapacity | ( | const ZyanBitset * | bitset, |
ZyanUSize * | capacity | ||
) |
Returns the current capacity of the bitset in bits.
bitset | A pointer to the ZyanBitset instance. |
capacity | Receives the size of the bitset in bits. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetCapacityBytes | ( | const ZyanBitset * | bitset, |
ZyanUSize * | capacity | ||
) |
Returns the current capacity of the bitset in bytes.
bitset | A pointer to the ZyanBitset instance. |
capacity | Receives the size of the bitset in bytes. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetSize | ( | const ZyanBitset * | bitset, |
ZyanUSize * | size | ||
) |
Returns the current size of the bitset in bits.
bitset | A pointer to the ZyanBitset instance. |
size | Receives the size of the bitset in bits. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetGetSizeBytes | ( | const ZyanBitset * | bitset, |
ZyanUSize * | size | ||
) |
Returns the current size of the bitset in bytes.
bitset | A pointer to the ZyanBitset instance. |
size | Receives the size of the bitset in bytes. |
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanBitsetInit | ( | ZyanBitset * | bitset, |
ZyanUSize | count | ||
) |
Initializes the given ZyanBitset
instance.
bitset | A pointer to the ZyanBitset instance. |
count | The initial amount of bits. |
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.
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. |
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.
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. |
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.
bitset | A pointer to the ZyanBitset instance. |
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.
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. |
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.
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. |
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.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetPush | ( | ZyanBitset * | bitset, |
ZyanBool | value | ||
) |
Adds a new bit at the end of the bitset.
bitset | A pointer to the ZyanBitset instance. |
value | The value of the new bit. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetReserve | ( | ZyanBitset * | bitset, |
ZyanUSize | count | ||
) |
Changes the capacity of the given ZyanBitset
instance.
bitset | A pointer to the ZyanBitset instance. |
count | The new capacity (number of bits). |
ZYCORE_EXPORT ZyanStatus ZyanBitsetReset | ( | ZyanBitset * | bitset, |
ZyanUSize | index | ||
) |
Sets the bit at index
of the given ZyanBitset
instance to 0
.
bitset | A pointer to the ZyanBitset instance. |
index | The bit index. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetResetAll | ( | ZyanBitset * | bitset | ) |
Sets all bits of the given ZyanBitset
instance to 0
.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetSet | ( | ZyanBitset * | bitset, |
ZyanUSize | index | ||
) |
Sets the bit at index
of the given ZyanBitset
instance to 1
.
bitset | A pointer to the ZyanBitset instance. |
index | The bit index. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetSetAll | ( | ZyanBitset * | bitset | ) |
Sets all bits of the given ZyanBitset
instance to 1
.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetShrinkToFit | ( | ZyanBitset * | bitset | ) |
Shrinks the capacity of the given bitset to match it's size.
bitset | A pointer to the ZyanBitset instance. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetTest | ( | ZyanBitset * | bitset, |
ZyanUSize | index | ||
) |
Returns the value of the bit at index
.
bitset | A pointer to the ZyanBitset instance. |
index | The bit index. |
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.
bitset | A pointer to the ZyanBitset instance. |
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.
bitset | A pointer to the ZyanBitset instance. |
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.
bitset | A pointer to the ZyanBitset instance. |
index | The bit index. |
ZYCORE_EXPORT ZyanStatus ZyanBitsetXOR | ( | ZyanBitset * | destination, |
const ZyanBitset * | source | ||
) |
Performs a logical XOR
operation on the given ZyanBitset
instances.
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. |
If the destination bitmask contains more bits than the source one, the state of the remaining bits will be undefined.