From e1a263cc5b8d04efd1964b2164d556e9116f191d Mon Sep 17 00:00:00 2001 From: Stu Black Date: Wed, 29 Oct 2025 12:32:32 -0400 Subject: [PATCH] Prune unused WMTree API functions. This is a first step towards migrating WINGs/tree.c to Rust. Happy finding: no parent pointer are actually needed, so we don't have to use a shared structure for node pointers! --- WINGs/WINGs/WUtil.h | 19 ------------ WINGs/tree.c | 75 --------------------------------------------- 2 files changed, 94 deletions(-) diff --git a/WINGs/WINGs/WUtil.h b/WINGs/WINGs/WUtil.h index 0caa7882..ea1ec114 100644 --- a/WINGs/WINGs/WUtil.h +++ b/WINGs/WINGs/WUtil.h @@ -631,36 +631,17 @@ WMTreeNode* WMInsertNodeInTree(WMTreeNode *parent, int index, WMTreeNode *aNode) #define WMAddNodeToTree(parent, aNode) WMInsertNodeInTree(parent, -1, aNode) -void WMDestroyTreeNode(WMTreeNode *aNode); - -void WMDeleteLeafForTreeNode(WMTreeNode *aNode, int index); - -void WMRemoveLeafForTreeNode(WMTreeNode *aNode, void *leaf); - -void* WMReplaceDataForTreeNode(WMTreeNode *aNode, void *newData); - void* WMGetDataForTreeNode(WMTreeNode *aNode); int WMGetTreeNodeDepth(WMTreeNode *aNode); -WMTreeNode* WMGetParentForTreeNode(WMTreeNode *aNode); - -/* Sort only the leaves of the passed node */ -void WMSortLeavesForTreeNode(WMTreeNode *aNode, WMCompareDataProc *comparer); - /* Sort all tree recursively starting from the passed node */ void WMSortTree(WMTreeNode *aNode, WMCompareDataProc *comparer); -/* Returns the first node which matches node's data with cdata by 'match' */ -WMTreeNode* WMFindInTree(WMTreeNode *aTree, WMMatchDataProc *match, void *cdata); - /* Returns the first node where node's data matches cdata by 'match' and node is * at most `limit' depths down from `aTree'. */ WMTreeNode *WMFindInTreeWithDepthLimit(WMTreeNode * aTree, WMMatchDataProc * match, void *cdata, int limit); -/* Returns first tree node that has data == cdata */ -#define WMGetFirstInTree(aTree, cdata) WMFindInTree(aTree, NULL, cdata) - /* Walk every node of aNode with `walk' */ void WMTreeWalk(WMTreeNode *aNode, WMTreeWalkProc * walk, void *data, Bool DepthFirst); diff --git a/WINGs/tree.c b/WINGs/tree.c index f6646848..b747724a 100644 --- a/WINGs/tree.c +++ b/WINGs/tree.c @@ -12,8 +12,6 @@ typedef struct W_TreeNode { int depth; - struct W_TreeNode *parent; - WMFreeDataProc *destructor; } W_TreeNode; @@ -42,7 +40,6 @@ WMTreeNode *WMCreateTreeNodeWithDestructor(void *data, WMFreeDataProc * destruct aNode = (WMTreeNode *) wmalloc(sizeof(W_TreeNode)); aNode->destructor = destructor; aNode->data = data; - aNode->parent = NULL; aNode->depth = 0; aNode->leaves = NULL; /*aNode->leaves = WMCreateArrayWithDestructor(1, destroyNode); */ @@ -57,7 +54,6 @@ WMTreeNode *WMInsertItemInTree(WMTreeNode * parent, int index, void *item) wassertrv(parent != NULL, NULL); aNode = WMCreateTreeNodeWithDestructor(item, parent->destructor); - aNode->parent = parent; aNode->depth = parent->depth + 1; if (!parent->leaves) { parent->leaves = WMCreateArrayWithDestructor(1, destroyNode); @@ -89,7 +85,6 @@ WMTreeNode *WMInsertNodeInTree(WMTreeNode * parent, int index, WMTreeNode * aNod wassertrv(parent != NULL, NULL); wassertrv(aNode != NULL, NULL); - aNode->parent = parent; updateNodeDepth(aNode, parent->depth + 1); if (!parent->leaves) { parent->leaves = WMCreateArrayWithDestructor(1, destroyNode); @@ -103,55 +98,6 @@ WMTreeNode *WMInsertNodeInTree(WMTreeNode * parent, int index, WMTreeNode * aNod return aNode; } -void WMDestroyTreeNode(WMTreeNode * aNode) -{ - wassertr(aNode != NULL); - - if (aNode->parent && aNode->parent->leaves) { - WMRemoveFromArray(aNode->parent->leaves, aNode); - } else { - destroyNode(aNode); - } -} - -void WMDeleteLeafForTreeNode(WMTreeNode * aNode, int index) -{ - wassertr(aNode != NULL); - wassertr(aNode->leaves != NULL); - - WMDeleteFromArray(aNode->leaves, index); -} - -static int sameData(const void *item, const void *data) -{ - return (((WMTreeNode *) item)->data == data); -} - -void WMRemoveLeafForTreeNode(WMTreeNode * aNode, void *leaf) -{ - int index; - - wassertr(aNode != NULL); - wassertr(aNode->leaves != NULL); - - index = WMFindInArray(aNode->leaves, sameData, leaf); - if (index != WANotFound) { - WMDeleteFromArray(aNode->leaves, index); - } -} - -void *WMReplaceDataForTreeNode(WMTreeNode * aNode, void *newData) -{ - void *old; - - wassertrv(aNode != NULL, NULL); - - old = aNode->data; - aNode->data = newData; - - return old; -} - void *WMGetDataForTreeNode(WMTreeNode * aNode) { return aNode->data; @@ -162,20 +108,6 @@ int WMGetTreeNodeDepth(WMTreeNode * aNode) return aNode->depth; } -WMTreeNode *WMGetParentForTreeNode(WMTreeNode * aNode) -{ - return aNode->parent; -} - -void WMSortLeavesForTreeNode(WMTreeNode * aNode, WMCompareDataProc * comparer) -{ - wassertr(aNode != NULL); - - if (aNode->leaves) { - WMSortArray(aNode->leaves, comparer); - } -} - static void sortLeavesForNode(WMTreeNode * aNode, WMCompareDataProc * comparer) { int i; @@ -218,13 +150,6 @@ static WMTreeNode *findNodeInTree(WMTreeNode * aNode, WMMatchDataProc * match, v return NULL; } -WMTreeNode *WMFindInTree(WMTreeNode * aTree, WMMatchDataProc * match, void *cdata) -{ - wassertrv(aTree != NULL, NULL); - - return findNodeInTree(aTree, match, cdata, -1); -} - WMTreeNode *WMFindInTreeWithDepthLimit(WMTreeNode * aTree, WMMatchDataProc * match, void *cdata, int limit) { wassertrv(aTree != NULL, NULL);