From 5fc073318a697b1b67b0102ab2df12395f1f9f05 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 21 Jul 2020 16:52:18 +0200 Subject: Cleaned up MAP API. Added 2 examles. --- examples/bits.c | 26 ++++++++++++++++++++++++++ examples/list.c | 23 +++++++++++++++++++++++ stc/cmap.h | 10 ++-------- 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 examples/bits.c create mode 100644 examples/list.c diff --git a/examples/bits.c b/examples/bits.c new file mode 100644 index 00000000..9767f8a3 --- /dev/null +++ b/examples/bits.c @@ -0,0 +1,26 @@ +#include +#include "cbitvec.h" + +int main() { + CBitVec vec = cbitvec_make(23, true); + cbitvec_unset(&vec, 9); + cbitvec_resize(&vec, 43, false); + printf("%4zu: ", vec.size); + for (int i=0; i +#include +#include +#include +declare_CList(ix, uint64_t); + +int main() { + CList_ix list = clist_init; + pcg32_random_t pcg = pcg32_seed(time(NULL), 0); + int n; + for (int i=0; i<10000000; ++i) // ten million + clist_ix_pushBack(&list, pcg32_random(&pcg)); + n = 100; + c_foreach (i, clist_ix, list) + if (n--) printf("%8d: %10zu\n", 100 - n, i.item->value); else break; + // Sort them... + clist_ix_sort(&list); // mergesort O(n*log n) + n = 100; + puts("sorted"); + c_foreach (i, clist_ix, list) + if (n--) printf("%8d: %10zu\n", 100 - n, i.item->value); else break; + clist_ix_destroy(&list); +} \ No newline at end of file diff --git a/stc/cmap.h b/stc/cmap.h index 05fbf547..04a31d09 100644 --- a/stc/cmap.h +++ b/stc/cmap.h @@ -72,10 +72,7 @@ enum {chash_HASH = 0x7f, chash_USED = 0x80}; declare_CMap_4(tag, Key, Value, c_defaultDestroy) #define declare_CMap_4(tag, Key, Value, valueDestroy) \ - declare_CMap_5(tag, Key, Value, valueDestroy, c_defaultEquals) - -#define declare_CMap_5(tag, Key, Value, valueDestroy, keyEquals) \ - declare_CMap_6(tag, Key, Value, valueDestroy, keyEquals, c_defaultHash) + declare_CMap_6(tag, Key, Value, valueDestroy, c_defaultEquals, c_defaultHash) #define declare_CMap_6(tag, Key, Value, valueDestroy, keyEquals, keyHash) \ declare_CMap_10(tag, Key, Value, valueDestroy, keyEquals, keyHash, \ @@ -91,10 +88,7 @@ enum {chash_HASH = 0x7f, chash_USED = 0x80}; c_MACRO_OVERLOAD(declare_CSet, __VA_ARGS__) #define declare_CSet_2(tag, Key) \ - declare_CSet_3(tag, Key, c_defaultEquals) - -#define declare_CSet_3(tag, Key, keyEquals) \ - declare_CSet_4(tag, Key, keyEquals, c_defaultHash) + declare_CSet_4(tag, Key, c_defaultEquals, c_defaultHash) #define declare_CSet_4(tag, Key, keyEquals, keyHash) \ declare_CSet_5(tag, Key, keyEquals, keyHash, c_defaultDestroy) -- cgit v1.2.3