XROAD
xroad_vector.h File Reference
#include "xroad_common_fwd.h"
#include "xroad_common_types.h"
#include <stdint.h>
#include <stdlib.h>
Include dependency graph for xroad_vector.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xroad_vector_args_t
 

Macros

#define xroad_vector_create(...)
 
#define __xroad_vector_dtor__   __dtor__(xroad_vector_destructor)
 
#define xroad_vector_push_back(vector, val)    xroad_vector_insert(vector, xroad_vector_get_size(vector), val)
 
#define xroad_vector_push_front(vector, val)    xroad_vector_insert(vector, 0, val)
 
#define xroad_vector_get_last(vector)    xroad_vector_get_at(vector, xroad_vector_get_size(vector) - 1)
 
#define xroad_vector_get_first(vector)    xroad_vector_get_at(vector, 0)
 

Typedefs

typedef void(* xroad_vector_free_func_t) (void *)
 
typedef int32_t(* xroad_cmp_func_t) (const void *, const void *)
 

Functions

xroad_vector_txroad_vector_create_ex (size_t entry_size, size_t capacity, xroad_mem_pool_t *pool, xroad_vector_free_func_t free_func)
 
void xroad_vector_destroy (xroad_vector_t *vector)
 
void xroad_vector_destructor (void *vector)
 
int32_t xroad_vector_get_size (const xroad_vector_t *vector)
 
int32_t xroad_vector_get_capacity (const xroad_vector_t *vector)
 
void xroad_vector_insert (xroad_vector_t *vector, size_t pos, void *val)
 
void xroad_vector_delete_at (xroad_vector_t *vector, size_t pos, xroad_vector_free_func_t free_func)
 
void xroad_vector_pop_back (xroad_vector_t *vector, xroad_vector_free_func_t free_func)
 
void * xroad_vector_get_at (const xroad_vector_t *vector, size_t pos)
 
int32_t xroad_vector_find (xroad_vector_t *vector, void *val, xroad_cmp_func_t cb)
 
void xroad_vector_sort (xroad_vector_t *vector, xroad_cmp_func_t cb)
 
void xroad_vector_clear (xroad_vector_t *vector)
 

Detailed Description

Macro Definition Documentation

◆ xroad_vector_create

#define xroad_vector_create (   ...)
Value:
({ \
xroad_vector_args_t args = {__VA_ARGS__}; \
xroad_vector_create_ex(args.entry_size, args.capacity, args.pool, args.dtor); \
})

◆ xroad_vector_get_first

#define xroad_vector_get_first (   vector)     xroad_vector_get_at(vector, 0)

return first entry of vector

Parameters
[in]vector- pointer to vector container
Returns
first entry

◆ xroad_vector_get_last

#define xroad_vector_get_last (   vector)     xroad_vector_get_at(vector, xroad_vector_get_size(vector) - 1)

return last entry of vector

Parameters
[in]vector- pointer to vector container
Returns
last entry

◆ xroad_vector_push_back

#define xroad_vector_push_back (   vector,
  val 
)     xroad_vector_insert(vector, xroad_vector_get_size(vector), val)

insert value at the end of vector

Parameters
[in]vector- pointer to vector container
[in]val- pointer to inserted value

◆ xroad_vector_push_front

#define xroad_vector_push_front (   vector,
  val 
)     xroad_vector_insert(vector, 0, val)

insert value at the top of vector

Parameters
[in]vector- pointer to vector container
[in]val- pointer to inserted value

Typedef Documentation

◆ xroad_cmp_func_t

typedef int32_t(* xroad_cmp_func_t) (const void *, const void *)

vector entries compare function

◆ xroad_vector_free_func_t

typedef void(* xroad_vector_free_func_t) (void *)

hash entry free function

Function Documentation

◆ xroad_vector_clear()

void xroad_vector_clear ( xroad_vector_t vector)

removes all position from vector

Parameters
[in]vector- pointer to vector container

◆ xroad_vector_create_ex()

xroad_vector_t* xroad_vector_create_ex ( size_t  entry_size,
size_t  capacity,
xroad_mem_pool_t *  pool,
xroad_vector_free_func_t  free_func 
)

create new vector container

Parameters
[in]entry_size- the size of entry
[in]capacity- the initial capacity of vector
[in]pool- memory pool. If NULL, glibc will be used
[in]free_func- function for free vector entries data, NULL - no free performed
Returns
vector object

◆ xroad_vector_delete_at()

void xroad_vector_delete_at ( xroad_vector_t vector,
size_t  pos,
xroad_vector_free_func_t  free_func 
)

delete entry from vector

Parameters
[in]vector- pointer to vector container
[in]pos- position in the container where entry should be deleted
[in]free_func- function for free vector entries data, NULL - no free performed

◆ xroad_vector_destroy()

void xroad_vector_destroy ( xroad_vector_t vector)

destroy vector container

Parameters
[in]vector- container to destroy. If NULL, nothing happened

◆ xroad_vector_find()

int32_t xroad_vector_find ( xroad_vector_t vector,
void *  val,
xroad_cmp_func_t  cb 
)

return first found entry

Parameters
[in]vector- pointer to vector container
[in]val- searching value
[in]cb- pointer to comparer callback
Returns
- found position otherwise -1

◆ xroad_vector_get_at()

void* xroad_vector_get_at ( const xroad_vector_t vector,
size_t  pos 
)

return entry of vector

Parameters
[in]vector- pointer to vector container
[in]pos- position in the vector container
Returns
vector entry

◆ xroad_vector_get_capacity()

int32_t xroad_vector_get_capacity ( const xroad_vector_t vector)

return vector capacity

Parameters
[in]vector- pointer to vector container

◆ xroad_vector_get_size()

int32_t xroad_vector_get_size ( const xroad_vector_t vector)

return vector size

Parameters
[in]vector- pointer to vector container

◆ xroad_vector_insert()

void xroad_vector_insert ( xroad_vector_t vector,
size_t  pos,
void *  val 
)

insert value into vector at specified position

Parameters
[in]vector- pointer to vector container
[in]pos- insert position
[in]val- pointer to inserted value

◆ xroad_vector_pop_back()

void xroad_vector_pop_back ( xroad_vector_t vector,
xroad_vector_free_func_t  free_func 
)

delete last_entry from vector

Parameters
[in]vector- pointer to vector container
[in]free_func- function for free vector entries data, NULL - no free performed

◆ xroad_vector_sort()

void xroad_vector_sort ( xroad_vector_t vector,
xroad_cmp_func_t  cb 
)

sort vector elements

Parameters
[in]vector- vector to sort
[in]cb- comparer function