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

Go to the source code of this file.

Classes

struct  xroad_list_args_t
 

Macros

#define xroad_list_create(...)
 
#define __xroad_list_dtor__   __dtor__(xroad_list_destructor)
 
#define xroad_list_push_back(list, val, size)    xroad_list_insert(list, xroad_list_get_last(list), val, size)
 
#define xroad_list_push_front(list, val, size)    xroad_list_insert(list, NULL, val, size)
 

Typedefs

typedef void(* xroad_list_free_func_t) (void *, uint32_t)
 
typedef int32_t(* xroad_list_cmp_func_t) (const void *, const void *)
 

Functions

xroad_list_txroad_list_create_ex (xroad_mem_pool_t *pool, xroad_list_free_func_t free_func)
 
void xroad_list_clear (xroad_list_t *list)
 
void xroad_list_destroy (xroad_list_t *list)
 
void xroad_list_destructor (void *list)
 
uint32_t xroad_list_get_size (xroad_list_t *list)
 
xroad_list_entry_t * xroad_list_insert (xroad_list_t *list, xroad_list_entry_t *entry, const void *val, uint32_t size)
 
void xroad_list_insert_at (xroad_list_t *list, xroad_list_entry_t *src, xroad_list_entry_t *dst)
 
xroad_list_entry_t * xroad_list_delete (xroad_list_t *list, xroad_list_entry_t *entry, xroad_list_free_func_t free_func)
 
xroad_list_entry_t * xroad_list_get_first (xroad_list_t *list)
 
xroad_list_entry_t * xroad_list_get_last (xroad_list_t *list)
 
xroad_list_entry_t * xroad_list_get_next (xroad_list_entry_t *entry)
 
xroad_list_entry_t * xroad_list_get_prev (xroad_list_entry_t *entry)
 
void * xroad_list_entry_get_value (xroad_list_entry_t *entry)
 
uint32_t xroad_list_entry_get_size (xroad_list_entry_t *entry)
 
xroad_list_entry_t * xroad_list_find (xroad_list_t *list, void *val, xroad_list_cmp_func_t cb)
 
void xroad_list_entry_set_value (xroad_list_entry_t *entry, const void *val, uint32_t size, xroad_list_free_func_t free_func)
 

Detailed Description

Macro Definition Documentation

◆ xroad_list_create

#define xroad_list_create (   ...)
Value:
({ \
xroad_list_args_t args = {__VA_ARGS__}; \
xroad_list_create_ex(args.pool, args.dtor); \
})

◆ xroad_list_push_back

#define xroad_list_push_back (   list,
  val,
  size 
)     xroad_list_insert(list, xroad_list_get_last(list), val, size)

insert value at the end of list

Parameters
[in]list- pointer to list container
[in]val- pointer to inserted value
[in]size- size of inserted value
Returns
pointer to created entry

◆ xroad_list_push_front

#define xroad_list_push_front (   list,
  val,
  size 
)     xroad_list_insert(list, NULL, val, size)

insert value at the top of list

Parameters
[in]list- pointer to list container
[in]val- pointer to inserted value
[in]size- size of inserted value
Returns
pointer to created entry

Typedef Documentation

◆ xroad_list_cmp_func_t

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

list entries compare function

◆ xroad_list_free_func_t

typedef void(* xroad_list_free_func_t) (void *, uint32_t)

list entry free function

Function Documentation

◆ xroad_list_clear()

void xroad_list_clear ( xroad_list_t list)

clear list container

Parameters
[in]list- list to clear
[in]free_func- function for free list entries data, NULL - no free performed

◆ xroad_list_create_ex()

xroad_list_t* xroad_list_create_ex ( xroad_mem_pool_t *  pool,
xroad_list_free_func_t  free_func 
)

create new list container

Returns
list object

◆ xroad_list_delete()

xroad_list_entry_t* xroad_list_delete ( xroad_list_t list,
xroad_list_entry_t *  entry,
xroad_list_free_func_t  free_func 
)

delete entry from list

Parameters
[in]list- pointer to list container
[in]entry- entry to delete
[in]free_func- function for free list entries data, NULL - no free performed
Returns
next entry

◆ xroad_list_destroy()

void xroad_list_destroy ( xroad_list_t list)

destroy list container

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

◆ xroad_list_entry_get_size()

uint32_t xroad_list_entry_get_size ( xroad_list_entry_t *  entry)

return entry data size

Parameters
[in]entry- entry with required value
Returns
entry value

◆ xroad_list_entry_get_value()

void* xroad_list_entry_get_value ( xroad_list_entry_t *  entry)

return entry value

Parameters
[in]entry- entry with required value
Returns
entry value

◆ xroad_list_entry_set_value()

void xroad_list_entry_set_value ( xroad_list_entry_t *  entry,
const void *  val,
uint32_t  size,
xroad_list_free_func_t  free_func 
)

list entry set value

Parameters
[in]entry- entry to replace value
[in]val- new entry value
[in]size- new entry size
[in]free_func- free function

◆ xroad_list_find()

xroad_list_entry_t* xroad_list_find ( xroad_list_t list,
void *  val,
xroad_list_cmp_func_t  cb 
)

return first found entry

Parameters
[in]list- pointer to list container
[in]val- searching value
[in]cb- pointer to comparer callback
Returns
entry value if found otherwise NULL

◆ xroad_list_get_first()

xroad_list_entry_t* xroad_list_get_first ( xroad_list_t list)

return first entry of list

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

◆ xroad_list_get_last()

xroad_list_entry_t* xroad_list_get_last ( xroad_list_t list)

return last entry of list

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

◆ xroad_list_get_next()

xroad_list_entry_t* xroad_list_get_next ( xroad_list_entry_t *  entry)

return next entry of list

Parameters
[in]entry- previous entry
Returns
next entry

◆ xroad_list_get_prev()

xroad_list_entry_t* xroad_list_get_prev ( xroad_list_entry_t *  entry)

return previous entry of list

Parameters
[in]entry- next entry
Returns
previous entry

◆ xroad_list_get_size()

uint32_t xroad_list_get_size ( xroad_list_t list)

return list size

Parameters
[in]list- pointer to list container

◆ xroad_list_insert()

xroad_list_entry_t* xroad_list_insert ( xroad_list_t list,
xroad_list_entry_t *  entry,
const void *  val,
uint32_t  size 
)

insert value into list at specified position

Parameters
[in]list- pointer to list container
[in]entry- new value will be inserted right after this entry
[in]val- pointer to inserted value
[in]size- size of inserted value
Returns
pointer to created entry

◆ xroad_list_insert_at()

void xroad_list_insert_at ( xroad_list_t list,
xroad_list_entry_t *  src,
xroad_list_entry_t *  dst 
)

inserts src entry after dst

Parameters
[in]list- pointer to list container
[in]src- moving entry
[in]dst- if NULL than entry inserted to first place, otherwise inserted next after dst