rsys

Basic data structures and low-level features
git clone git://git.meso-star.fr/rsys.git
Log | Files | Refs | README | LICENSE

commit fc7d77be4729cd3b48db4e746e82c2dab343d003
parent 5235c0bde1ace2cbe5f03d39c7978305765e7ff1
Author: vaplv <vaplv@free.fr>
Date:   Tue, 11 Oct 2016 09:53:50 +0200

Add and test the is_empty free list function

Diffstat:
Msrc/free_list.h | 7+++++++
Msrc/test_free_list.c | 9+++++++++
2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/free_list.h b/src/free_list.h @@ -212,6 +212,13 @@ CONCAT(FITEM_TYPE, _id_get)(const struct FITEM_TYPE* item) return item->fitem__.id; } +static FINLINE int +FLIST_FUNC__(is_empty)(struct FLIST_TYPE__* list) +{ + ASSERT(list); + return list->head == list->tail; +} + #undef FLIST_TYPE__ #undef FLIST_FUNC__ #undef FITEM_TYPE diff --git a/src/test_free_list.c b/src/test_free_list.c @@ -41,9 +41,15 @@ main(int argc, char** argv) } flist_object_init(NULL, &list); + CHECK(flist_object_is_empty(&list), 1); CHECK(flist_object_hold(&list, id[0]), 0); CHECK(flist_object_get(&list, id[0]), NULL); + id[0] = flist_object_add(&list); + CHECK(flist_object_is_empty(&list), 0); + flist_object_clear(&list); + CHECK(flist_object_is_empty(&list), 1); + FOR_EACH(i, 0, NB_OBJ / 2) { struct fid tmp_id; id[i] = flist_object_add(&list); @@ -54,6 +60,7 @@ main(int argc, char** argv) NCHECK(obj, NULL); obj->i = 0xDECAF000 + (unsigned)i; } + CHECK(flist_object_is_empty(&list), 0); FOR_EACH(i, 0, NB_OBJ * 2 / 3) { const float rand_f /* in [0, 1] */ = (float)rand() / (float)RAND_MAX; @@ -121,7 +128,9 @@ main(int argc, char** argv) } } + CHECK(flist_object_is_empty(&list), 0); flist_object_clear(&list); + CHECK(flist_object_is_empty(&list), 1); nitems = 0; FLIST_FOR_EACH(obj, &list) ++nitems;