diff options
Diffstat (limited to 'src/trg-files-tree.c')
-rw-r--r-- | src/trg-files-tree.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/trg-files-tree.c b/src/trg-files-tree.c index cadef12..b3a3df9 100644 --- a/src/trg-files-tree.c +++ b/src/trg-files-tree.c @@ -27,11 +27,25 @@ #include "trg-files-tree.h" +void trg_files_tree_node_add_child(trg_files_tree_node* node, trg_files_tree_node* child) +{ + if (!node->childrenHash) { + node->childrenHash = g_hash_table_new(g_str_hash, g_str_equal); + } + g_hash_table_insert(node->childrenHash, child->name, child); + node->children = g_list_append(node->children, child); +} + void trg_files_tree_node_free(trg_files_tree_node * node) { GList *li; + for (li = node->children; li; li = g_list_next(li)) trg_files_tree_node_free((trg_files_tree_node *) li->data); + + if (node->childrenHash) + g_hash_table_destroy(node->childrenHash); + g_list_free(node->children); g_free(node->name); g_free(node); |