Add replacer
This commit is contained in:
parent
b435f5cc55
commit
5ed1818d96
|
@ -1,3 +1,3 @@
|
||||||
VERSION = 1.4.0
|
VERSION = 1.5.0
|
||||||
PREFIX = /usr/local
|
PREFIX = /usr/local
|
||||||
CC = clang
|
CC = clang
|
||||||
|
|
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_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_list(llist_t*);
|
||||||
static llist_err corelibs_llist_free_elem(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 = {
|
struct corelibs_llist_interface const llist = {
|
||||||
.create = corelibs_llist_create,
|
.create = corelibs_llist_create,
|
||||||
.link = corelibs_llist_link,
|
.link = corelibs_llist_link,
|
||||||
|
.rep = corelibs_llist_rep,
|
||||||
.free = {
|
.free = {
|
||||||
.list = corelibs_llist_free_list,
|
.list = corelibs_llist_free_list,
|
||||||
.elem = corelibs_llist_free_elem,
|
.elem = corelibs_llist_free_elem,
|
||||||
|
@ -179,6 +181,24 @@ ret:
|
||||||
return err;
|
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
|
static llist_err
|
||||||
corelibs_llist_get_next(const llist_t* e, llist_t** save)
|
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 {
|
struct corelibs_llist_interface {
|
||||||
llist_err (*const create)(void* content, void (*const free_function)(void*), llist_t** save);
|
llist_err (*const create)(void* content, void (*const free_function)(void*), llist_t** save);
|
||||||
llist_err (*const link)(uintmax_t elements, ...);
|
llist_err (*const link)(uintmax_t elements, ...);
|
||||||
|
llist_err (*const rep)(llist_t* dest, llist_t* src);
|
||||||
const struct {
|
const struct {
|
||||||
llist_err (*const list)(llist_t* element);
|
llist_err (*const list)(llist_t* element);
|
||||||
llist_err (*const elem)(llist_t* element);
|
llist_err (*const elem)(llist_t* element);
|
||||||
|
|
Reference in New Issue