return getFirstValidTreeInfoEntry(default_node);
}
-TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
+static TreeInfo *getValidTreeInfoEntryExt(TreeInfo *node, boolean get_next_node)
{
if (node == NULL)
return NULL;
return getFirstValidTreeInfoEntry(node->node_group);
if (node->parent_link) // skip first node (back link) of node group
+ get_next_node = TRUE;
+
+ if (get_next_node)
{
// get next regular tree node, or step up until one is found
while (node->next == NULL && node->node_parent != NULL)
return node;
}
+TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
+{
+ return getValidTreeInfoEntryExt(node, FALSE);
+}
+
+TreeInfo *getNextValidTreeInfoEntry(TreeInfo *node)
+{
+ return getValidTreeInfoEntryExt(node, TRUE);
+}
+
TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *node)
{
if (node == NULL)
boolean validLevelSeries(TreeInfo *);
TreeInfo *getValidLevelSeries(TreeInfo *, TreeInfo *);
TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *);
+TreeInfo *getNextValidTreeInfoEntry(TreeInfo *);
TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *);
int numTreeInfoInGroup(TreeInfo *);
int getPosFromTreeInfo(TreeInfo *);