implement wm_treenode_all_keyroots
This commit is contained in:
parent
d5c745f8e1
commit
8629efe06f
17
src/util.c
17
src/util.c
@ -313,6 +313,23 @@ bool wm_is_treenode_keyroot(TreeNode *node)
|
||||
return wm_treenode_lmd(node) != wm_treenode_lmd(node->parent);
|
||||
}
|
||||
|
||||
PtrArray wm_treenode_all_keyroots(TreeNode *node)
|
||||
{
|
||||
assert(node);
|
||||
|
||||
PtrArray ret = wm_ptrarray_new();
|
||||
PtrArray postorder = wm_postorder_traversal(node);
|
||||
|
||||
for (size_t i = 0; i < postorder.size; i++) {
|
||||
TreeNode *node = ((TreeNode**)postorder.ptrs)[i];
|
||||
if (wm_is_treenode_keyroot(node))
|
||||
wm_ptrarray_push(&ret, node);
|
||||
}
|
||||
|
||||
wm_ptrarray_free(&postorder);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void wm_treenode_print(TreeNode *node)
|
||||
{
|
||||
char *str = wm_treenode_to_str(node);
|
||||
|
@ -106,6 +106,7 @@ TreeNode* wm_treenode_lmd(TreeNode *node);
|
||||
PtrArray wm_treenode_all_lmds(TreeNode *node);
|
||||
PtrArray wm_postorder_traversal(TreeNode *tree);
|
||||
bool wm_is_treenode_keyroot(TreeNode *node);
|
||||
PtrArray wm_treenode_all_keyroots(TreeNode *node);
|
||||
|
||||
ClientArray wm_clientarray_new();
|
||||
void wm_clientarray_push(ClientArray *arr, Client node);
|
||||
|
Loading…
x
Reference in New Issue
Block a user