summaryrefslogtreecommitdiff
path: root/src/main.c
blob: 7e460c8ade64a55cd855f083b8744353bb504d12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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;
}