40 if (item_size == 0 || chunk_size == 0 || vector == NULL)
47 v->
items = malloc(item_size * chunk_size);
48 if (v->
items == NULL) {
92 if (vector == NULL || item == NULL)
102 void *temp = realloc(vector->
items,
108 vector->
items = temp;
192 if (vector == NULL || ctx == NULL || vector->
current_item < 0)
229 const char *prefix,
void (*printer)(
void *item));
232 void (*printer)(
void *item))
236 if (vector == NULL || printer == NULL)
240 printf(
"%s %d: ", prefix != NULL ? prefix :
"", i);
int32_t current_item
Index of current item.
size_t items_allocated
Number of slots allocated.
size_t item_size
Size of an item in the vector.
size_t chunk_size
Size of a vector chunk.
void * items
Items in vector.
parserutils_error parserutils_vector_get_length(parserutils_vector *vector, size_t *length)
Acquire the length (in items) of the vector.
parserutils_error parserutils_vector_destroy(parserutils_vector *vector)
Destroy a vector instance.
parserutils_error parserutils_vector_create(size_t item_size, size_t chunk_size, parserutils_vector **vector)
Create a vector.
parserutils_error parserutils_vector_append(parserutils_vector *vector, void *item)
Append an item to the vector.
const void * parserutils_vector_peek(const parserutils_vector *vector, int32_t ctx)
Peek at an item in a vector.
parserutils_error parserutils_vector_remove_last(parserutils_vector *vector)
Remove the last item from a vector.
const void * parserutils_vector_iterate(const parserutils_vector *vector, int32_t *ctx)
Iterate over a vector.
void parserutils_vector_dump(parserutils_vector *vector, const char *prefix, void(*printer)(void *item))
parserutils_error parserutils_vector_clear(parserutils_vector *vector)
Clear a vector.