Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
# Network Tree
loc_network_tree_add_network;
+ loc_network_tree_count_networks;
+ loc_network_tree_count_nodes;
loc_network_tree_dump;
loc_network_tree_new;
loc_network_tree_unref;
int loc_network_tree_dump(struct loc_network_tree* tree);
int loc_network_tree_add_network(struct loc_network_tree* tree, struct loc_network* network);
size_t loc_network_tree_count_networks(struct loc_network_tree* tree);
+size_t loc_network_tree_count_nodes(struct loc_network_tree* tree);
#endif
return counter;
}
+
+static size_t __loc_network_tree_count_nodes(struct loc_network_tree_node* node) {
+ size_t counter = 1;
+
+ if (node->zero)
+ counter += __loc_network_tree_count_nodes(node->zero);
+
+ if (node->one)
+ counter += __loc_network_tree_count_nodes(node->one);
+
+ return counter;
+}
+
+LOC_EXPORT size_t loc_network_tree_count_nodes(struct loc_network_tree* tree) {
+ return __loc_network_tree_count_nodes(tree->root);
+}
exit(EXIT_FAILURE);
}
+ size_t nodes = loc_network_tree_count_nodes(tree);
+ printf("The tree has %zu nodes\n", nodes);
+
// Create a database
struct loc_writer* writer;
err = loc_writer_new(ctx, &writer);