21#define VL_SET_ITER_INVALID VL_STRUCTURE_INDEX_MAX
30#define VL_SET_FOREACH(set, trackVar) \
31 for (vl_set_iter trackVar = vlSetFront(set); (trackVar) != VL_SET_ITER_INVALID; \
32 (trackVar) = vlSetNext(set, trackVar))
41#define VL_SET_FOREACH_REVERSE(set, trackVar) \
42 for (vl_set_iter trackVar = vlSetBack(set); (trackVar) != VL_SET_ITER_INVALID; \
43 (trackVar) = vlSetPrev(set, trackVar))
54#define vlSetSize(set) (size_t)((set)->nodePool.totalTaken)
101VL_API
void vlSetInit(
vl_set* set, vl_memsize_t elementSize, vl_compare_function compFunc);
144VL_API
vl_set*
vlSetNew(vl_memsize_t elementSize, vl_compare_function compFunc);
VL_STRUCTURE_INDEX_T vl_dsidx_t
Index type for data structures.
Definition vl_numtypes.h:75
VL_POOL_INDEX_T vl_pool_idx
Definition vl_pool.h:53
Fixed-size memory pool with stable indices and geometric growth.
Definition vl_pool.h:141
vl_pool nodePool
Definition vl_set.h:73
VL_API vl_set_iter vlSetBack(vl_set *set)
Definition vl_set.c:86
vl_pool_idx vl_set_iter
Definition vl_set.h:57
VL_API vl_set * vlSetClone(const vl_set *src, vl_set *dest)
Clones the specified set to another.
Definition vl_set.c:772
VL_API void vlSetInit(vl_set *set, vl_memsize_t elementSize, vl_compare_function compFunc)
Definition vl_set.c:248
VL_API void vlSetRemoveElem(vl_set *set, const void *elem)
Definition vl_set.c:763
VL_API vl_set_iter vlSetPrev(vl_set *set, vl_set_iter iter)
Definition vl_set.c:328
VL_API vl_set * vlSetNew(vl_memsize_t elementSize, vl_compare_function compFunc)
Definition vl_set.c:259
vl_dsidx_t totalElements
Definition vl_set.h:75
VL_API void vlSetDelete(vl_set *set)
Definition vl_set.c:266
VL_API void vlSetClear(vl_set *set)
Definition vl_set.c:765
VL_API void vlSetFree(vl_set *set)
Definition vl_set.c:257
VL_API int vlSetCopy(vl_set *src, vl_set_iter begin, vl_set_iter end, vl_set *dest)
Copies a range of elements from one set to another.
Definition vl_set.c:795
VL_API vl_set_iter vlSetFront(vl_set *set)
Definition vl_set.c:69
VL_API void vlSetRemove(vl_set *set, vl_set_iter iter)
Definition vl_set.c:655
VL_API vl_set_iter vlSetNext(vl_set *set, vl_set_iter iter)
Definition vl_set.c:284
vl_set_iter root
Definition vl_set.h:78
vl_uint16_t elementSize
Definition vl_set.h:74
VL_API vl_set_iter vlSetInsert(vl_set *set, const void *elem)
Definition vl_set.c:371
VL_API vl_set_iter vlSetFind(vl_set *set, const void *elem)
Definition vl_set.c:829
VL_API vl_set * vlSetIntersection(vl_set *a, vl_set *b, vl_set *dest)
Computes the intersection between sets A and B, stored in set dest.
Definition vl_set.c:879
vl_compare_function comparator
Definition vl_set.h:76
VL_API void * vlSetSample(vl_set *set, vl_set_iter iter)
Definition vl_set.c:272
VL_API vl_set * vlSetDifference(vl_set *a, vl_set *b, vl_set *dest)
Compute the difference between sets A and B, stored in set dest.
Definition vl_set.c:910
VL_API vl_set * vlSetUnion(vl_set *a, vl_set *b, vl_set *dest)
Computes the union between sets A and B, stored in set dest.
Definition vl_set.c:853
An ordered set.
Definition vl_set.h:72