1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 12:58:08 +01:00

updates to the tree code

This commit is contained in:
dan
2001-01-11 02:59:32 +00:00
parent a7ec9dab95
commit 7d88519c75
2 changed files with 53 additions and 2 deletions

View File

@@ -592,6 +592,14 @@ int WMGetTreeNodeDepth(WMTreeNode *node);
void WMDestroyTreeNode(WMTreeNode *node); void WMDestroyTreeNode(WMTreeNode *node);
void* WMGetDataForTreeNode(WMTreeNode *node);
WMTreeNode* WMGetParentForTreeNode(WMTreeNode *node);
void WMSortLeavesForTreeNode(WMTreeNode *node, WMCompareDataProc *comparer);
void WMSortTree(WMTreeNode *root, WMCompareDataProc *comparer);
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/

View File

@@ -1,7 +1,6 @@
//#include <stdlib.h>
#include <string.h> #include <string.h>
#include "WUtil.h" #include "WUtil.h"
@@ -10,7 +9,7 @@
typedef struct W_TreeNode { typedef struct W_TreeNode {
void *data; void *data;
//unsigned int uflags:16; /*unsigned int uflags:16;*/
WMArray *leaves; WMArray *leaves;
@@ -158,3 +157,47 @@ WMDestroyTreeNode(WMTreeNode *node)
} }
void*
WMGetDataForTreeNode(WMTreeNode *node)
{
return node->data;
}
WMTreeNode*
WMGetParentForTreeNode(WMTreeNode *node)
{
return node->parent;
}
void
WMSortLeavesForTreeNode(WMTreeNode *node, WMCompareDataProc *comparer)
{
wassertr(node!=NULL);
WMSortArray(node->leaves, comparer);
}
static void
sortLeavesForNode(WMTreeNode *node, WMCompareDataProc *comparer)
{
int i;
WMSortArray(node->leaves, comparer);
for (i=0; i<WMGetArrayItemCount(node->leaves); i++) {
sortLeavesForNode(WMGetFromArray(node->leaves, i), comparer);
}
}
void
WMSortTree(WMTreeNode *root, WMCompareDataProc *comparer)
{
wassertr(root!=NULL);
sortLeavesForNode(root, comparer);
}