summaryrefslogtreecommitdiffstats
path: root/lib/libhmap/src/test.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2024-10-02 03:59:21 +0200
committerLouis Burda <quent.burda@gmail.com>2024-10-02 03:59:21 +0200
commit36c8d24c07ef3c6658f397fd156396f83b35ac27 (patch)
tree1b3293264dca677a8d8e1ca44061aa7af191f839 /lib/libhmap/src/test.c
parenteff49100e4fca394a23973abd5001a4fde15d6e8 (diff)
downloadtabular-master.tar.gz
tabular-master.zip
Vendor subgit modulesHEADmaster
Diffstat (limited to 'lib/libhmap/src/test.c')
-rw-r--r--lib/libhmap/src/test.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/libhmap/src/test.c b/lib/libhmap/src/test.c
new file mode 100644
index 0000000..b248702
--- /dev/null
+++ b/lib/libhmap/src/test.c
@@ -0,0 +1,42 @@
+#include "hmap.h"
+
+#include <err.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define LIBHMAP_ERR(rc) errx(1, "libhmap: %s", \
+ rc < 0 ? strerror(-rc) : hmap_err[rc])
+
+static const char *hmap_err[] = {
+ HMAP_STRERR_INIT
+};
+
+int
+main(int argc, const char **argv)
+{
+ struct hmap hmap;
+ struct hmap_iter iter;
+ char *arg;
+ int i, rc;
+
+ rc = hmap_init(&hmap, 10, hmap_str_hash,
+ hmap_str_keycmp, &stdlib_heap_allocator);
+ if (rc) LIBHMAP_ERR(rc);
+
+ for (i = 1; i < argc; i++) {
+ arg = strdup(argv[i]);
+ rc = hmap_add(&hmap, (struct hmap_key) {.p = arg},
+ (struct hmap_val) {.i = i});
+ if (rc) LIBHMAP_ERR(rc);
+ }
+
+ for (HMAP_ITER(&hmap, iter)) {
+ printf("%s: %i\n", (char *)iter.link->key.p,
+ iter.link->value.i);
+ }
+
+ for (HMAP_ITER(&hmap, iter))
+ free(iter.link->key._p);
+ hmap_deinit(&hmap);
+}