Add replacer
This commit is contained in:
parent
b435f5cc55
commit
5ed1818d96
22
llist.c
22
llist.c
|
@ -24,7 +24,8 @@
|
|||
|
||||
static llist_err corelibs_llist_create(void*, void (*)(void*), llist_t**);
|
||||
|
||||
static llist_err corelibs_llist_link(uintmax_t cnt, ...);
|
||||
static llist_err corelibs_llist_link(uintmax_t, ...);
|
||||
static llist_err corelibs_llist_rep(llist_t*, llist_t*);
|
||||
|
||||
static llist_err corelibs_llist_free_list(llist_t*);
|
||||
static llist_err corelibs_llist_free_elem(llist_t*);
|
||||
|
@ -56,6 +57,7 @@ enum { // Avoid collision in error numbers
|
|||
struct corelibs_llist_interface const llist = {
|
||||
.create = corelibs_llist_create,
|
||||
.link = corelibs_llist_link,
|
||||
.rep = corelibs_llist_rep,
|
||||
.free = {
|
||||
.list = corelibs_llist_free_list,
|
||||
.elem = corelibs_llist_free_elem,
|
||||
|
@ -179,6 +181,24 @@ ret:
|
|||
return err;
|
||||
}
|
||||
|
||||
static llist_err
|
||||
corelibs_llist_rep(llist_t* dest, llist_t* src)
|
||||
{
|
||||
llist_err err = CORELIBS_LLIST_ERR_OK;
|
||||
|
||||
if (src == NULL || dest == NULL) {
|
||||
err = CORELIBS_LLIST_ERR_NULL;
|
||||
goto ret;
|
||||
}
|
||||
|
||||
if (dest->prev != NULL) dest->prev->next = src;
|
||||
if (dest->next != NULL) dest->next->prev = src;
|
||||
|
||||
corelibs_llist_free_elem(dest);
|
||||
ret:
|
||||
return err;
|
||||
}
|
||||
|
||||
static llist_err
|
||||
corelibs_llist_get_next(const llist_t* e, llist_t** save)
|
||||
{
|
||||
|
|
1
llist.h
1
llist.h
|
@ -27,6 +27,7 @@ typedef signed short int llist_err;
|
|||
struct corelibs_llist_interface {
|
||||
llist_err (*const create)(void* content, void (*const free_function)(void*), llist_t** save);
|
||||
llist_err (*const link)(uintmax_t elements, ...);
|
||||
llist_err (*const rep)(llist_t* dest, llist_t* src);
|
||||
const struct {
|
||||
llist_err (*const list)(llist_t* element);
|
||||
llist_err (*const elem)(llist_t* element);
|
||||
|
|
Reference in New Issue