Implement branch deleting with reparent
This commit is contained in:
parent
fd25215671
commit
91eacbb8c7
24
src/main.c
24
src/main.c
|
@ -41,29 +41,13 @@ int main(int argc, char* *argv){
|
||||||
NOD_NodeAddChild(bsd, openbsd);
|
NOD_NodeAddChild(bsd, openbsd);
|
||||||
NOD_NodeAddChild(bsd, debianbsd);
|
NOD_NodeAddChild(bsd, debianbsd);
|
||||||
|
|
||||||
|
NOD_DestroyNodeBranch(bsd);
|
||||||
|
NOD_DestroyNodeBranch(ubuntu);
|
||||||
|
|
||||||
//NOD_NodeUnparent(child2);
|
//NOD_NodeUnparent(child2);
|
||||||
|
|
||||||
NOD_PrintNodeTree(distros);
|
NOD_PrintNodeTree(distros);
|
||||||
NOD_PrintNodeTree(arch);
|
|
||||||
NOD_PrintNodeTree(linoox);
|
|
||||||
NOD_PrintNodeTree(debian);
|
|
||||||
NOD_PrintNodeTree(freebsd);
|
|
||||||
|
|
||||||
NOD_DestroyNode(distros);
|
|
||||||
NOD_DestroyNode(linoox);
|
|
||||||
NOD_DestroyNode(debian);
|
|
||||||
NOD_DestroyNode(ubuntu);
|
|
||||||
NOD_DestroyNode(mint);
|
|
||||||
NOD_DestroyNode(devuan);
|
|
||||||
NOD_DestroyNode(kali);
|
|
||||||
NOD_DestroyNode(voidlinux);
|
|
||||||
NOD_DestroyNode(arch);
|
|
||||||
NOD_DestroyNode(manjaro);
|
|
||||||
NOD_DestroyNode(parabola);
|
|
||||||
NOD_DestroyNode(endeavouros);
|
|
||||||
NOD_DestroyNode(bsd);
|
|
||||||
NOD_DestroyNode(freebsd);
|
|
||||||
NOD_DestroyNode(openbsd);
|
|
||||||
NOD_DestroyNode(debianbsd);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
11
src/node.c
11
src/node.c
|
@ -20,10 +20,21 @@ NOD_Node *NOD_CreateNode(char *name){
|
||||||
|
|
||||||
void NOD_DestroyNode(NOD_Node *node){
|
void NOD_DestroyNode(NOD_Node *node){
|
||||||
if(node != NULL){
|
if(node != NULL){
|
||||||
|
printf("[ INF ] Deleting node \"%s\"\n", node->name);
|
||||||
|
NOD_NodeUnparent(node);
|
||||||
free(node);
|
free(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NOD_DestroyNodeBranch(NOD_Node *node){
|
||||||
|
if(node != NULL){
|
||||||
|
for(int i = 0; i < node->childc && node->childv != NULL; i++){
|
||||||
|
NOD_DestroyNodeBranch(node->childv[i]);
|
||||||
|
}
|
||||||
|
NOD_DestroyNode(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void NOD_NodeAddChild(NOD_Node *parent, NOD_Node *child){
|
void NOD_NodeAddChild(NOD_Node *parent, NOD_Node *child){
|
||||||
if(parent != NULL && child != NULL){
|
if(parent != NULL && child != NULL){
|
||||||
/** Prevent recursion */
|
/** Prevent recursion */
|
||||||
|
|
|
@ -15,6 +15,7 @@ typedef struct node{
|
||||||
|
|
||||||
NOD_Node *NOD_CreateNode(char *name);
|
NOD_Node *NOD_CreateNode(char *name);
|
||||||
void NOD_DestroyNode(NOD_Node *node);
|
void NOD_DestroyNode(NOD_Node *node);
|
||||||
|
void NOD_DestroyNodeBranch(NOD_Node *node);
|
||||||
|
|
||||||
void NOD_NodeAddChild(NOD_Node *parent, NOD_Node *child);
|
void NOD_NodeAddChild(NOD_Node *parent, NOD_Node *child);
|
||||||
void NOD_NodeUnparent(NOD_Node *child);
|
void NOD_NodeUnparent(NOD_Node *child);
|
||||||
|
|
Loading…
Reference in New Issue