mindex.c

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

commit 9b0cde1ece9c69937752afe00fa6c5cc6e1ed40c
parent 8c34572ffe564cfa1b940aaf5e1a0c56e84ebba1
Author: Yersa Nordman <finwo@pm.me>
Date:   Tue, 12 Mar 2024 23:26:05 +0100

Made purge method optional

Diffstat:
Msrc/mindex.c | 10++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/mindex.c b/src/mindex.c @@ -123,7 +123,7 @@ void mindex_set(struct mindex_t *mindex, void *item) { // Item already in there, notify we skipped insertion if (resp->signal & mindex_signal_found) { mindex->items[resp->index] = item; - mindex->purge(resp->value, mindex->udata); + if (mindex->purge) mindex->purge(resp->value, mindex->udata); free(resp); return; } @@ -171,7 +171,7 @@ void mindex_delete(struct mindex_t *mindex, void *pattern) { // Call user's purge method void *item = mindex->items[resp->index]; - mindex->purge(item, mindex->udata); + if (mindex->purge) mindex->purge(item, mindex->udata); // Move everything on it's right to it void *dst = &(mindex->items[resp->index]); @@ -195,8 +195,10 @@ void mindex_free(struct mindex_t *mindex) { // Step 1, purge all entries int i; - for (i=0; i < mindex->length; i++) { - mindex->purge(mindex->items[i], mindex->udata); + if (mindex->purge) { + for (i=0; i < mindex->length; i++) { + mindex->purge(mindex->items[i], mindex->udata); + } } // Step 2, free the list