summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2021-09-16 18:55:43 +0000
committer0scar <qgt268@alumni.ku.dk>2021-09-16 18:55:43 +0000
commit9802644a3c6f7d4de289b425eb5ac76a07a0f523 (patch)
tree361ad24ffbe96586ea230c73f066f978e7f80e12 /src/main.c
parent04783746a8160b2bdacbc5eda065a56293fc2248 (diff)
Add template for btrees
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..7e460c8
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "btree.h"
+
+enum gender {
+ gender_male,
+ gender_female,
+ gender_other
+};
+
+struct userdat {
+ const char *name;
+ unsigned short age;
+ enum gender gender;
+};
+
+int userdat_cmp(const void *a, const void *b) {
+ const struct userdat *ua = a;
+ const struct userdat *ub = b;
+
+ if (ua->age == ub->age) {
+ if (ua->gender > ub->gender) { return BTREE_CMP_GT; }
+ else if (ua->gender < ub->gender) { return BTREE_CMP_LT; }
+ { return BTREE_CMP_EQ; }
+
+ } else if (ua->age > ub->age) {
+ return BTREE_CMP_GT;
+ } return BTREE_CMP_LT;
+}
+
+int main() {
+ struct btree *tree = btree_new(sizeof(struct userdat),
+ BTREE_DEGREE_DEFAULT,
+ &userdat_cmp);
+
+ btree_free(tree);
+
+ return 0;
+}