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:
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);