Remove unused variables and change .c compilation rule, separate free in list free and element free

This commit is contained in:
Alex Denes 2021-08-13 16:32:59 +00:00
parent 53afcb02bb
commit b0fe2f65f2
No account linked to committer's email address
4 changed files with 29 additions and 11 deletions

View File

@ -40,8 +40,8 @@ OBJ = ${SRC:.c=.o}
all: ${OBJ}
.c.o:
${CC} -c ${CFLAGS} $<
%.o: %.c
${CC} -c ${CFLAGS} -o $@ $<
clean:
rm -f ${OBJ}

View File

@ -1,7 +1,3 @@
VERSION = 1.0.1
VERSION = 1.1.1
PREFIX = /usr/local
CC = clang
AR = llvm-ar
RANLIB = llvm-ranlib

25
llist.c
View File

@ -23,7 +23,8 @@
static llist_err corelibs_llist_create(void*, void (*)(void*), llist_t**);
static llist_err corelibs_llist_link(llist_t*, llist_t*);
static llist_err corelibs_llist_free(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_set_cont(llist_t*, void*);
static llist_err corelibs_llist_set_free(llist_t*, void (*)(void*));
@ -51,7 +52,10 @@ enum { // Avoid collision in error numbers
struct corelibs_llist_interface const llist = {
.create = corelibs_llist_create,
.link = corelibs_llist_link,
.free = corelibs_llist_free,
.free = {
.list = corelibs_llist_free_list,
.elem = corelibs_llist_free_elem,
},
.set = {
.cont = corelibs_llist_set_cont,
.free = corelibs_llist_set_free,
@ -94,7 +98,7 @@ ret:
}
static llist_err
corelibs_llist_free(llist_t* l)
corelibs_llist_free_list(llist_t* l)
{
llist_err err = CORELIBS_LLIST_ERR_OK;
@ -122,6 +126,21 @@ ret:
return err;
}
static llist_err
corelibs_llist_free_elem(llist_t* l)
{
llist_err err = CORELIBS_LLIST_ERR_OK;
if (l == NULL) {
err = CORELIBS_LLIST_ERR_NULL;
goto ret;
}
corelibs_llist_remove(l);
ret:
return err;
}
static llist_err
corelibs_llist_link(llist_t* a, llist_t* b)
{

View File

@ -25,7 +25,10 @@ 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)(llist_t* element_a, llist_t* element_b);
llist_err (*const free)(llist_t* element);
const struct {
llist_err (*const list)(llist_t* element);
llist_err (*const elem)(llist_t* element);
} free;
const struct {
llist_err (*const cont)(llist_t* element, void* content);
llist_err (*const free)(llist_t* element, void (*const free_function)(void*));