summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--examples/bits.c26
-rw-r--r--examples/list.c23
-rw-r--r--stc/cmap.h10
3 files changed, 51 insertions, 8 deletions
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 <stdio.h>
+#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<vec.size; ++i)
+ printf("%d", cbitvec_value(&vec, i));puts("");
+
+ cbitvec_set(&vec, 28);
+ cbitvec_resize(&vec, 77, true);
+ cbitvec_resize(&vec, 93, false);
+ cbitvec_resize(&vec, 102, true);
+ cbitvec_setValue(&vec, 99, false);
+ printf("%4zu: ", vec.size);
+ for (int i=0; i<vec.size; ++i)
+ printf("%d", cbitvec_value(&vec, i));puts("");
+
+ cbitvec_setAll(&vec, false);
+ printf("%4zu: ", vec.size);
+ for (int i=0; i<vec.size; ++i)
+ printf("%d", cbitvec_value(&vec, i));puts("");
+ cbitvec_destroy(&vec);
+} \ No newline at end of file
diff --git a/examples/list.c b/examples/list.c
new file mode 100644
index 00000000..4fa76f81
--- /dev/null
+++ b/examples/list.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <time.h>
+#include <stc/clist.h>
+#include <stc/crandom.h>
+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)