mindex.c

In-memory ordered store and fetch library
git clone git://git.finwo.net/lib/mindex.c
Log | Files | Refs | README | LICENSE

commit dd3b7f2db809eaee9016f6f7021ee5e00ce9cb13
parent 5b622926c5fbd9cda2fbe64c47e1b712dcc9a0c9
Author: Yersa Nordman <yersa@finwo.nl>
Date:   Sat,  4 Mar 2023 22:39:23 +0100

Using noporpoise/sort_r instead of direct qsort_r

Diffstat:
MMakefile | 2+-
Mpackage.ini | 9++++-----
Msrc/mindex.c | 5++++-
Msrc/mindex.h | 2+-
4 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile @@ -5,7 +5,7 @@ SRC+=test.c INCLUDES?= INCLUDES+=-I src -override CFLAGS?=-Wall -g -O2 +override CFLAGS?=-Wall -g -O2 -std=c99 include lib/.dep/config.mk diff --git a/package.ini b/package.ini @@ -1,10 +1,9 @@ [dependencies] finwo/assert=https://github.com/finwo/c-assert/archive/refs/tags/edge.tar.gz - -[package] -deps=lib -name=finwo/mindex - +noporpoise/sort_r=https://raw.githubusercontent.com/finwo/dep-repository/main/noporpoise/sort_r/package.ini [export] config.mk=config.mk include/finwo/mindex.h=src/mindex.h +[package] +deps=lib +name=finwo/mindex diff --git a/src/mindex.c b/src/mindex.c @@ -3,6 +3,8 @@ #include <stdlib.h> #include <string.h> +#include "noporpoise/sort_r.h" + #include "mindex.h" #ifndef MINDEX_SPARE @@ -49,7 +51,7 @@ void mindex_set(struct mindex_t *mindex, void *item) { mindex->spare--; // Sort the list - qsort_r(mindex->items, mindex->length, sizeof(void *), mindex->compare, mindex->udata); + sort_r(mindex->items, mindex->length, sizeof(void *), mindex->compare, mindex->udata); // Done } @@ -125,6 +127,7 @@ void * mindex_rand(struct mindex_t *mindex) { } // TODO: mindex_delete_internal(..., items, idx) +// TODO: delete an exact pointer, not a pattern (extra fn?) void mindex_delete(struct mindex_t *mindex, void *pattern) { int idx = mindex_get_internal(mindex->items, mindex->length, pattern, mindex->compare, mindex->udata); diff --git a/src/mindex.h b/src/mindex.h @@ -16,7 +16,7 @@ struct mindex_t * mindex_init(int (*compare)(const void *a, const void *b, void void mindex_set(struct mindex_t *mindex, void *item); void * mindex_get(struct mindex_t *mindex, void *pattern); void * mindex_rand(struct mindex_t *mindex); -void mindex_delete(struct mindex_t *mindex, void *item); +void mindex_delete(struct mindex_t *mindex, void *pattern); size_t mindex_length(struct mindex_t *mindex); void mindex_free(struct mindex_t *mindex);