Zycore  1.2.0.0
Classes | Macros | Typedefs | Functions
Vector.h File Reference
#include <Zycore/Allocator.h>
#include <Zycore/Comparison.h>
#include <Zycore/Object.h>
#include <Zycore/Status.h>
#include <Zycore/Types.h>
Include dependency graph for Vector.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ZyanVector_
 

Macros

#define ZYAN_VECTOR_MIN_CAPACITY   1
 
#define ZYAN_VECTOR_DEFAULT_GROWTH_FACTOR   2
 
#define ZYAN_VECTOR_DEFAULT_SHRINK_THRESHOLD   4
 
#define ZYAN_VECTOR_INITIALIZER
 
#define ZYAN_VECTOR_GET(type, vector, index)    (*(const type*)ZyanVectorGet(vector, index))
 
#define ZYAN_VECTOR_FOREACH(type, vector, item_name, body)
 
#define ZYAN_VECTOR_FOREACH_MUTABLE(type, vector, item_name, body)
 

Typedefs

typedef struct ZyanVector_ ZyanVector
 

Functions

ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanVectorInit (ZyanVector *vector, ZyanUSize element_size, ZyanUSize capacity, ZyanMemberProcedure destructor)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorInitEx (ZyanVector *vector, ZyanUSize element_size, ZyanUSize capacity, ZyanMemberProcedure destructor, ZyanAllocator *allocator, ZyanU8 growth_factor, ZyanU8 shrink_threshold)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorInitCustomBuffer (ZyanVector *vector, ZyanUSize element_size, void *buffer, ZyanUSize capacity, ZyanMemberProcedure destructor)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorDestroy (ZyanVector *vector)
 
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanVectorDuplicate (ZyanVector *destination, const ZyanVector *source, ZyanUSize capacity)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorDuplicateEx (ZyanVector *destination, const ZyanVector *source, ZyanUSize capacity, ZyanAllocator *allocator, ZyanU8 growth_factor, ZyanU8 shrink_threshold)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorDuplicateCustomBuffer (ZyanVector *destination, const ZyanVector *source, void *buffer, ZyanUSize capacity)
 
ZYCORE_EXPORT const void * ZyanVectorGet (const ZyanVector *vector, ZyanUSize index)
 
ZYCORE_EXPORT void * ZyanVectorGetMutable (const ZyanVector *vector, ZyanUSize index)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorGetPointer (const ZyanVector *vector, ZyanUSize index, const void **value)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorGetPointerMutable (const ZyanVector *vector, ZyanUSize index, void **value)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorSet (ZyanVector *vector, ZyanUSize index, const void *value)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorPushBack (ZyanVector *vector, const void *element)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorInsert (ZyanVector *vector, ZyanUSize index, const void *element)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorInsertRange (ZyanVector *vector, ZyanUSize index, const void *elements, ZyanUSize count)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorEmplace (ZyanVector *vector, void **element, ZyanMemberFunction constructor)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorEmplaceEx (ZyanVector *vector, ZyanUSize index, void **element, ZyanMemberFunction constructor)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorSwapElements (ZyanVector *vector, ZyanUSize index_first, ZyanUSize index_second)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorDelete (ZyanVector *vector, ZyanUSize index)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorDeleteRange (ZyanVector *vector, ZyanUSize index, ZyanUSize count)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorPopBack (ZyanVector *vector)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorClear (ZyanVector *vector)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorFind (const ZyanVector *vector, const void *element, ZyanISize *found_index, ZyanEqualityComparison comparison)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorFindEx (const ZyanVector *vector, const void *element, ZyanISize *found_index, ZyanEqualityComparison comparison, ZyanUSize index, ZyanUSize count)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorBinarySearch (const ZyanVector *vector, const void *element, ZyanUSize *found_index, ZyanComparison comparison)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorBinarySearchEx (const ZyanVector *vector, const void *element, ZyanUSize *found_index, ZyanComparison comparison, ZyanUSize index, ZyanUSize count)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorResize (ZyanVector *vector, ZyanUSize size)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorResizeEx (ZyanVector *vector, ZyanUSize size, const void *initializer)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorReserve (ZyanVector *vector, ZyanUSize capacity)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorShrinkToFit (ZyanVector *vector)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorGetCapacity (const ZyanVector *vector, ZyanUSize *capacity)
 
ZYCORE_EXPORT ZyanStatus ZyanVectorGetSize (const ZyanVector *vector, ZyanUSize *size)
 

Detailed Description

Implements the vector container class.

Macro Definition Documentation

◆ ZYAN_VECTOR_DEFAULT_GROWTH_FACTOR

#define ZYAN_VECTOR_DEFAULT_GROWTH_FACTOR   2

The default growth factor for all vector instances.

◆ ZYAN_VECTOR_DEFAULT_SHRINK_THRESHOLD

#define ZYAN_VECTOR_DEFAULT_SHRINK_THRESHOLD   4

The default shrink threshold for all vector instances.

◆ ZYAN_VECTOR_FOREACH

#define ZYAN_VECTOR_FOREACH (   type,
  vector,
  item_name,
  body 
)
Value:
{ \
const ZyanUSize ZYAN_MACRO_CONCAT_EXPAND(size_d50d3303, item_name) = (vector)->size; \
for (ZyanUSize ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name) = 0; \
ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name) < \
ZYAN_MACRO_CONCAT_EXPAND(size_d50d3303, item_name); \
++ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name)) \
{ \
const type item_name = ZYAN_VECTOR_GET(type, vector, \
ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name)); \
body \
} \
}
#define ZYAN_MACRO_CONCAT_EXPAND(x, y)
Definition: Defines.h:58
#define ZYAN_VECTOR_GET(type, vector, index)
Definition: Vector.h:153

Loops through all elements of the vector.

Parameters
typeThe desired value type.
vectorA pointer to the ZyanVector instance.
item_nameThe name of the iterator item.
bodyThe body to execute for each item in the vector.

◆ ZYAN_VECTOR_FOREACH_MUTABLE

#define ZYAN_VECTOR_FOREACH_MUTABLE (   type,
  vector,
  item_name,
  body 
)
Value:
{ \
const ZyanUSize ZYAN_MACRO_CONCAT_EXPAND(size_d50d3303, item_name) = (vector)->size; \
for (ZyanUSize ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name) = 0; \
ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name) < \
ZYAN_MACRO_CONCAT_EXPAND(size_d50d3303, item_name); \
++ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name)) \
{ \
type* const item_name = ZyanVectorGetMutable(vector, \
ZYAN_MACRO_CONCAT_EXPAND(i_bfd62679, item_name)); \
body \
} \
}
ZYCORE_EXPORT void * ZyanVectorGetMutable(const ZyanVector *vector, ZyanUSize index)

Loops through all elements of the vector.

Parameters
typeThe desired value type.
vectorA pointer to the ZyanVector instance.
item_nameThe name of the iterator item.
bodyThe body to execute for each item in the vector.

◆ ZYAN_VECTOR_GET

#define ZYAN_VECTOR_GET (   type,
  vector,
  index 
)     (*(const type*)ZyanVectorGet(vector, index))

Returns the value of the element at the given index.

Parameters
typeThe desired value type.
vectorA pointer to the ZyanVector instance.
indexThe element index.
Returns
The value of the desired element in the vector.

Note that this function is unsafe and might dereference a null-pointer.

◆ ZYAN_VECTOR_INITIALIZER

#define ZYAN_VECTOR_INITIALIZER
Value:
{ \
/* allocator */ ZYAN_NULL, \
/* growth_factor */ 0, \
/* shrink_threshold */ 0, \
/* size */ 0, \
/* capacity */ 0, \
/* element_size */ 0, \
/* destructor */ ZYAN_NULL, \
/* data */ ZYAN_NULL \
}

Defines an uninitialized ZyanVector instance.

◆ ZYAN_VECTOR_MIN_CAPACITY

#define ZYAN_VECTOR_MIN_CAPACITY   1

The initial minimum capacity (number of elements) for all dynamically allocated vector instances.

Typedef Documentation

◆ ZyanVector

typedef struct ZyanVector_ ZyanVector

Defines the ZyanVector struct.

All fields in this struct should be considered as "private". Any changes may lead to unexpected behavior.

Function Documentation

◆ ZyanVectorBinarySearch()

ZYCORE_EXPORT ZyanStatus ZyanVectorBinarySearch ( const ZyanVector vector,
const void *  element,
ZyanUSize *  found_index,
ZyanComparison  comparison 
)

Searches for the first occurrence of element in the given vector using a binary- search algorithm.

Parameters
vectorA pointer to the ZyanVector instance.
elementA pointer to the element to search for.
found_indexA pointer to a variable that receives the index of the found element.
comparisonThe comparison function to use.
Returns
ZYAN_STATUS_TRUE if the element was found, ZYAN_STATUS_FALSE if not or a generic zyan status code if an error occurred.

If found, found_index contains the zero-based index of element. If not found, found_index contains the index of the first entry larger than element.

This function requires all elements in the vector to be strictly ordered (sorted).

◆ ZyanVectorBinarySearchEx()

ZYCORE_EXPORT ZyanStatus ZyanVectorBinarySearchEx ( const ZyanVector vector,
const void *  element,
ZyanUSize *  found_index,
ZyanComparison  comparison,
ZyanUSize  index,
ZyanUSize  count 
)

Searches for the first occurrence of element in the given vector using a binary- search algorithm.

Parameters
vectorA pointer to the ZyanVector instance.
elementA pointer to the element to search for.
found_indexA pointer to a variable that receives the index of the found element.
comparisonThe comparison function to use.
indexThe start index.
countThe maximum number of elements to iterate, beginning from the start index.
Returns
ZYAN_STATUS_TRUE if the element was found, ZYAN_STATUS_FALSE if not or a generic zyan status code if an error occurred.

If found, found_index contains the zero-based index of element. If not found, found_index contains the index of the first entry larger than element.

This function requires all elements in the vector to be strictly ordered (sorted).

◆ ZyanVectorClear()

ZYCORE_EXPORT ZyanStatus ZyanVectorClear ( ZyanVector vector)

Erases all elements of the given vector.

Parameters
vectorA pointer to the ZyanVector instance.
Returns
A zyan status code.

◆ ZyanVectorDelete()

ZYCORE_EXPORT ZyanStatus ZyanVectorDelete ( ZyanVector vector,
ZyanUSize  index 
)

Deletes the element at the given index of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe element index.
Returns
A zyan status code.

◆ ZyanVectorDeleteRange()

ZYCORE_EXPORT ZyanStatus ZyanVectorDeleteRange ( ZyanVector vector,
ZyanUSize  index,
ZyanUSize  count 
)

Deletes multiple elements from the given vector, starting at index.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe index of the first element to delete.
countThe number of elements to delete.
Returns
A zyan status code.

◆ ZyanVectorDestroy()

ZYCORE_EXPORT ZyanStatus ZyanVectorDestroy ( ZyanVector vector)

Destroys the given ZyanVector instance.

Parameters
vectorA pointer to the ZyanVector instance..
Returns
A zyan status code.

◆ ZyanVectorDuplicate()

ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanVectorDuplicate ( ZyanVector destination,
const ZyanVector source,
ZyanUSize  capacity 
)

Initializes a new ZyanVector instance by duplicating an existing vector.

Parameters
destinationA pointer to the (uninitialized) destination ZyanVector instance.
sourceA pointer to the source vector.
capacityThe initial capacity (number of elements).
                 This value is automatically adjusted to the size of the source vector, if
                 a smaller value was passed.
Returns
A zyan status code.

The memory for the vector is dynamically allocated by the default allocator using the default growth factor and the default shrink threshold.

Finalization with ZyanVectorDestroy is required for all instances created by this function.

◆ ZyanVectorDuplicateCustomBuffer()

ZYCORE_EXPORT ZyanStatus ZyanVectorDuplicateCustomBuffer ( ZyanVector destination,
const ZyanVector source,
void *  buffer,
ZyanUSize  capacity 
)

Initializes a new ZyanVector instance by duplicating an existing vector and configures it to use a custom user defined buffer with a fixed size.

Parameters
destinationA pointer to the (uninitialized) destination ZyanVector instance.
sourceA pointer to the source vector.
bufferA pointer to the buffer that is used as storage for the elements.
capacityThe maximum capacity (number of elements) of the buffer.
                 This function will fail, if the capacity of the buffer is less than the
                 size of the source vector.
Returns
A zyan status code.

Finalization is not required for instances created by this function.

◆ ZyanVectorDuplicateEx()

ZYCORE_EXPORT ZyanStatus ZyanVectorDuplicateEx ( ZyanVector destination,
const ZyanVector source,
ZyanUSize  capacity,
ZyanAllocator allocator,
ZyanU8  growth_factor,
ZyanU8  shrink_threshold 
)

Initializes a new ZyanVector instance by duplicating an existing vector and sets a custom allocator and memory allocation/deallocation parameters.

Parameters
destinationA pointer to the (uninitialized) destination ZyanVector instance.
sourceA pointer to the source vector.
capacityThe initial capacity (number of elements).
                         This value is automatically adjusted to the size of the source
                         vector, if a smaller value was passed.
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.

Finalization with ZyanVectorDestroy is required for all instances created by this function.

◆ ZyanVectorEmplace()

ZYCORE_EXPORT ZyanStatus ZyanVectorEmplace ( ZyanVector vector,
void **  element,
ZyanMemberFunction  constructor 
)

Constructs an element in-place at the end of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
elementReceives a pointer to the new element.
constructorThe constructor callback or ZYAN_NULL. The new element will be in undefined state, if no constructor was passed.
Returns
A zyan status code.

◆ ZyanVectorEmplaceEx()

ZYCORE_EXPORT ZyanStatus ZyanVectorEmplaceEx ( ZyanVector vector,
ZyanUSize  index,
void **  element,
ZyanMemberFunction  constructor 
)

Constructs an element in-place and inserts it at the given index of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe insert index.
elementReceives a pointer to the new element.
constructorThe constructor callback or ZYAN_NULL. The new element will be in undefined state, if no constructor was passed.
Returns
A zyan status code.

◆ ZyanVectorFind()

ZYCORE_EXPORT ZyanStatus ZyanVectorFind ( const ZyanVector vector,
const void *  element,
ZyanISize *  found_index,
ZyanEqualityComparison  comparison 
)

Sequentially searches for the first occurrence of element in the given vector.

Parameters
vectorA pointer to the ZyanVector instance.
elementA pointer to the element to search for.
found_indexA pointer to a variable that receives the index of the found element.
comparisonThe comparison function to use.
Returns
ZYAN_STATUS_TRUE if the element was found, ZYAN_STATUS_FALSE if not or a generic zyan status code if an error occurred.

The found_index is set to -1, if the element was not found.

◆ ZyanVectorFindEx()

ZYCORE_EXPORT ZyanStatus ZyanVectorFindEx ( const ZyanVector vector,
const void *  element,
ZyanISize *  found_index,
ZyanEqualityComparison  comparison,
ZyanUSize  index,
ZyanUSize  count 
)

Sequentially searches for the first occurrence of element in the given vector.

Parameters
vectorA pointer to the ZyanVector instance.
elementA pointer to the element to search for.
found_indexA pointer to a variable that receives the index of the found element.
comparisonThe comparison function to use.
indexThe start index.
countThe maximum number of elements to iterate, beginning from the start index.
Returns
ZYAN_STATUS_TRUE if the element was found, ZYAN_STATUS_FALSE if not or a generic zyan status code if an error occurred.

The found_index is set to -1, if the element was not found.

◆ ZyanVectorGet()

ZYCORE_EXPORT const void* ZyanVectorGet ( const ZyanVector vector,
ZyanUSize  index 
)

Returns a constant pointer to the element at the given index.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe element index.
Returns
A constant pointer to the desired element in the vector or ZYAN_NULL, if an error occurred.

Note that the returned pointer might get invalid when the vector is resized by either a manual call to the memory-management functions or implicitly by inserting or removing elements.

Take a look at ZyanVectorGetPointer instead, if you need a function that returns a zyan status code.

◆ ZyanVectorGetCapacity()

ZYCORE_EXPORT ZyanStatus ZyanVectorGetCapacity ( const ZyanVector vector,
ZyanUSize *  capacity 
)

Returns the current capacity of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
capacityReceives the size of the vector.
Returns
A zyan status code.

◆ ZyanVectorGetMutable()

ZYCORE_EXPORT void* ZyanVectorGetMutable ( const ZyanVector vector,
ZyanUSize  index 
)

Returns a mutable pointer to the element at the given index.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe element index.
Returns
A mutable pointer to the desired element in the vector or ZYAN_NULL, if an error occurred.

Note that the returned pointer might get invalid when the vector is resized by either a manual call to the memory-management functions or implicitly by inserting or removing elements.

Take a look at ZyanVectorGetPointerMutable instead, if you need a function that returns a zyan status code.

◆ ZyanVectorGetPointer()

ZYCORE_EXPORT ZyanStatus ZyanVectorGetPointer ( const ZyanVector vector,
ZyanUSize  index,
const void **  value 
)

Returns a constant pointer to the element at the given index.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe element index.
valueReceives a constant pointer to the desired element in the vector.

Note that the returned pointer might get invalid when the vector is resized by either a manual call to the memory-management functions or implicitly by inserting or removing elements.

Returns
A zyan status code.

◆ ZyanVectorGetPointerMutable()

ZYCORE_EXPORT ZyanStatus ZyanVectorGetPointerMutable ( const ZyanVector vector,
ZyanUSize  index,
void **  value 
)

Returns a mutable pointer to the element at the given index.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe element index.
valueReceives a mutable pointer to the desired element in the vector.

Note that the returned pointer might get invalid when the vector is resized by either a manual call to the memory-management functions or implicitly by inserting or removing elements.

Returns
A zyan status code.

◆ ZyanVectorGetSize()

ZYCORE_EXPORT ZyanStatus ZyanVectorGetSize ( const ZyanVector vector,
ZyanUSize *  size 
)

Returns the current size of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
sizeReceives the size of the vector.
Returns
A zyan status code.

◆ ZyanVectorInit()

ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanVectorInit ( ZyanVector vector,
ZyanUSize  element_size,
ZyanUSize  capacity,
ZyanMemberProcedure  destructor 
)

Initializes the given ZyanVector instance.

Parameters
vectorA pointer to the ZyanVector instance.
element_sizeThe size of a single element in bytes.
capacityThe initial capacity (number of elements).
destructorA destructor callback that is invoked every time an item is deleted, or ZYAN_NULL if not needed.
Returns
A zyan status code.

The memory for the vector elements is dynamically allocated by the default allocator using the default growth factor and the default shrink threshold.

Finalization with ZyanVectorDestroy is required for all instances created by this function.

◆ ZyanVectorInitCustomBuffer()

ZYCORE_EXPORT ZyanStatus ZyanVectorInitCustomBuffer ( ZyanVector vector,
ZyanUSize  element_size,
void *  buffer,
ZyanUSize  capacity,
ZyanMemberProcedure  destructor 
)

Initializes the given ZyanVector instance and configures it to use a custom user defined buffer with a fixed size.

Parameters
vectorA pointer to the ZyanVector instance.
element_sizeThe size of a single element in bytes.
bufferA pointer to the buffer that is used as storage for the elements.
capacityThe maximum capacity (number of elements) of the buffer.
destructorA destructor callback that is invoked every time an item is deleted, or ZYAN_NULL if not needed.
Returns
A zyan status code.

Finalization is not required for instances created by this function.

◆ ZyanVectorInitEx()

ZYCORE_EXPORT ZyanStatus ZyanVectorInitEx ( ZyanVector vector,
ZyanUSize  element_size,
ZyanUSize  capacity,
ZyanMemberProcedure  destructor,
ZyanAllocator allocator,
ZyanU8  growth_factor,
ZyanU8  shrink_threshold 
)

Initializes the given ZyanVector instance and sets a custom allocator and memory allocation/deallocation parameters.

Parameters
vectorA pointer to the ZyanVector instance.
element_sizeThe size of a single element in bytes.
capacityThe initial capacity (number of elements).
destructorA destructor callback that is invoked every time an item is deleted, or ZYAN_NULL if not needed.
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.

Finalization with ZyanVectorDestroy is required for all instances created by this function.

◆ ZyanVectorInsert()

ZYCORE_EXPORT ZyanStatus ZyanVectorInsert ( ZyanVector vector,
ZyanUSize  index,
const void *  element 
)

Inserts an element at the given index of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe insert index.
elementA pointer to the element to insert.
Returns
A zyan status code.

◆ ZyanVectorInsertRange()

ZYCORE_EXPORT ZyanStatus ZyanVectorInsertRange ( ZyanVector vector,
ZyanUSize  index,
const void *  elements,
ZyanUSize  count 
)

Inserts multiple elements at the given index of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe insert index.
elementsA pointer to the first element.
countThe number of elements to insert.
Returns
A zyan status code.

◆ ZyanVectorPopBack()

ZYCORE_EXPORT ZyanStatus ZyanVectorPopBack ( ZyanVector vector)

Removes the last element of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
Returns
A zyan status code.

◆ ZyanVectorPushBack()

ZYCORE_EXPORT ZyanStatus ZyanVectorPushBack ( ZyanVector vector,
const void *  element 
)

Adds a new element to the end of the vector.

Parameters
vectorA pointer to the ZyanVector instance.
elementA pointer to the element to add.
Returns
A zyan status code.

◆ ZyanVectorReserve()

ZYCORE_EXPORT ZyanStatus ZyanVectorReserve ( ZyanVector vector,
ZyanUSize  capacity 
)

Changes the capacity of the given ZyanVector instance.

Parameters
vectorA pointer to the ZyanVector instance.
capacityThe new minimum capacity of the vector.
Returns
A zyan status code.

◆ ZyanVectorResize()

ZYCORE_EXPORT ZyanStatus ZyanVectorResize ( ZyanVector vector,
ZyanUSize  size 
)

Resizes the given ZyanVector instance.

Parameters
vectorA pointer to the ZyanVector instance.
sizeThe new size of the vector.
Returns
A zyan status code.

◆ ZyanVectorResizeEx()

ZYCORE_EXPORT ZyanStatus ZyanVectorResizeEx ( ZyanVector vector,
ZyanUSize  size,
const void *  initializer 
)

Resizes the given ZyanVector instance.

Parameters
vectorA pointer to the ZyanVector instance.
sizeThe new size of the vector.
initializerA pointer to a value to be used as initializer for new items.
Returns
A zyan status code.

◆ ZyanVectorSet()

ZYCORE_EXPORT ZyanStatus ZyanVectorSet ( ZyanVector vector,
ZyanUSize  index,
const void *  value 
)

Assigns a new value to the element at the given index.

Parameters
vectorA pointer to the ZyanVector instance.
indexThe value index.
valueThe value to assign.
Returns
A zyan status code.

◆ ZyanVectorShrinkToFit()

ZYCORE_EXPORT ZyanStatus ZyanVectorShrinkToFit ( ZyanVector vector)

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

Parameters
vectorA pointer to the ZyanVector instance.
Returns
A zyan status code.

◆ ZyanVectorSwapElements()

ZYCORE_EXPORT ZyanStatus ZyanVectorSwapElements ( ZyanVector vector,
ZyanUSize  index_first,
ZyanUSize  index_second 
)

Swaps the element at index_first with the element at index_second.

Parameters
vectorA pointer to the ZyanVector instance.
index_firstThe index of the first element.
index_secondThe index of the second element.
Returns
A zyan status code.

This function requires the vector to have spare capacity for one temporary element. Call ZyanVectorReserve before this function to increase capacity, if needed.