embox
1/**
2* @file
3* @brief Implementation of methods in util/tree.h
4*
5* @date Oct 8, 2011
6* @author Avdyukhin Dmitry
7*/
8
9#include <assert.h>10#include <stddef.h>11
12#include <lib/libds/dlist.h>13#include <lib/libds/tree.h>14
15struct tree_link *tree_children_begin(struct tree_link *tree) {16struct dlist_head *lnk;17
18if (NULL == (lnk = (dlist_first_or_null(&tree->children)))) {19return NULL;20}21
22return dlist_entry(lnk, struct tree_link, list_link);23}
24
25struct tree_link *tree_children_end(struct tree_link *tree) {26struct dlist_head *lnk;27
28if (dlist_empty(&tree->children)) {29return NULL;30}31
32lnk = dlist_prev(&tree->children);33
34return dlist_entry(lnk->next, struct tree_link, list_link);35}
36
37struct tree_link *tree_children_next(struct tree_link *tree) {38return dlist_entry(tree->list_link.next, struct tree_link, list_link);39}
40
41struct tree_link *tree_children_prev(struct tree_link *tree) {42return dlist_entry(tree->list_link.next, struct tree_link, list_link);43}
44