Libparserutils
vector.c File Reference
#include <inttypes.h>
#include <string.h>
#include <parserutils/utils/vector.h>
#include <stdio.h>

Go to the source code of this file.

Data Structures

struct  parserutils_vector
 Vector object. More...
 

Functions

parserutils_error parserutils_vector_create (size_t item_size, size_t chunk_size, parserutils_vector **vector)
 Create a vector.
 
parserutils_error parserutils_vector_destroy (parserutils_vector *vector)
 Destroy a vector instance.
 
parserutils_error parserutils_vector_append (parserutils_vector *vector, void *item)
 Append an item to the vector.
 
parserutils_error parserutils_vector_clear (parserutils_vector *vector)
 Clear a vector.
 
parserutils_error parserutils_vector_remove_last (parserutils_vector *vector)
 Remove the last item from a vector.
 
parserutils_error parserutils_vector_get_length (parserutils_vector *vector, size_t *length)
 Acquire the length (in items) of the vector.
 
const void * parserutils_vector_iterate (const parserutils_vector *vector, int32_t *ctx)
 Iterate over a vector.
 
const void * parserutils_vector_peek (const parserutils_vector *vector, int32_t ctx)
 Peek at an item in a vector.
 
void parserutils_vector_dump (parserutils_vector *vector, const char *prefix, void(*printer)(void *item))
 

Function Documentation

◆ parserutils_vector_append()

parserutils_error parserutils_vector_append ( parserutils_vector * vector,
void * item )

Append an item to the vector.

Parameters
vectorThe vector to append to
itemThe item to append
Returns
PARSERUTILS_OK on success, appropriate error otherwise

Definition at line 87 of file vector.c.

References parserutils_vector::chunk_size, parserutils_vector::current_item, parserutils_vector::item_size, parserutils_vector::items, parserutils_vector::items_allocated, PARSERUTILS_BADPARM, PARSERUTILS_INVALID, PARSERUTILS_NOMEM, and PARSERUTILS_OK.

◆ parserutils_vector_clear()

parserutils_error parserutils_vector_clear ( parserutils_vector * vector)

Clear a vector.

Parameters
vectorThe vector to clear
Returns
PARSERUTILS_OK on success, appropriate error otherwise.

Definition at line 125 of file vector.c.

References parserutils_vector::current_item, PARSERUTILS_BADPARM, PARSERUTILS_INVALID, and PARSERUTILS_OK.

◆ parserutils_vector_create()

parserutils_error parserutils_vector_create ( size_t item_size,
size_t chunk_size,
parserutils_vector ** vector )

Create a vector.

Parameters
item_sizeLength, in bytes, of an item in the vector
chunk_sizeNumber of vector slots in a chunk
vectorPointer to location to receive vector instance
Returns
PARSERUTILS_OK on success, PARSERUTILS_BADPARM on bad parameters, PARSERUTILS_NOMEM on memory exhaustion

Definition at line 35 of file vector.c.

References parserutils_vector::chunk_size, parserutils_vector::current_item, parserutils_vector::item_size, parserutils_vector::items, parserutils_vector::items_allocated, PARSERUTILS_BADPARM, PARSERUTILS_NOMEM, and PARSERUTILS_OK.

◆ parserutils_vector_destroy()

parserutils_error parserutils_vector_destroy ( parserutils_vector * vector)

Destroy a vector instance.

Parameters
vectorThe vector to destroy
Returns
PARSERUTILS_OK on success, appropriate error otherwise.

Definition at line 69 of file vector.c.

References parserutils_vector::items, PARSERUTILS_BADPARM, and PARSERUTILS_OK.

◆ parserutils_vector_dump()

void parserutils_vector_dump ( parserutils_vector * vector,
const char * prefix,
void(* printer )(void *item) )
extern

◆ parserutils_vector_get_length()

parserutils_error parserutils_vector_get_length ( parserutils_vector * vector,
size_t * length )

Acquire the length (in items) of the vector.

Parameters
vectorThe vector to interrogate.
lengthPointer to location to receive length information.
Returns
PARSERUTILS_OK on success, appropriate error otherwise

Definition at line 164 of file vector.c.

References parserutils_vector::current_item, PARSERUTILS_BADPARM, and PARSERUTILS_OK.

◆ parserutils_vector_iterate()

const void * parserutils_vector_iterate ( const parserutils_vector * vector,
int32_t * ctx )

Iterate over a vector.

Parameters
vectorThe vector to iterate over
ctxPointer to an integer for the iterator to use as context.
Returns
Pointer to current item, or NULL if no more
Note
The value pointed to by ctx must be zero to begin the iteration.

Definition at line 187 of file vector.c.

References parserutils_vector::current_item, parserutils_vector::item_size, and parserutils_vector::items.

◆ parserutils_vector_peek()

const void * parserutils_vector_peek ( const parserutils_vector * vector,
int32_t ctx )

Peek at an item in a vector.

Parameters
vectorThe vector to iterate over
ctxInteger for the iterator to use as context.
Returns
Pointer to item, or NULL if no more

Definition at line 212 of file vector.c.

References parserutils_vector::current_item, parserutils_vector::item_size, and parserutils_vector::items.

◆ parserutils_vector_remove_last()

parserutils_error parserutils_vector_remove_last ( parserutils_vector * vector)

Remove the last item from a vector.

Parameters
vectorThe vector to remove from
Returns
PARSERUTILS_OK on success, appropriate error otherwise

Definition at line 144 of file vector.c.

References parserutils_vector::current_item, PARSERUTILS_BADPARM, PARSERUTILS_INVALID, and PARSERUTILS_OK.