Compare commits
	
		
			3 Commits
		
	
	
		
			48908719fa
			...
			01e4d7c9ec
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
									
								
								 | 
						01e4d7c9ec | |
| 
							
							
								
									
								
								 | 
						9e702bcdbb | |
| 
							
							
								 | 
						643e2e5ba4 | 
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CC="tcc"
 | 
					CC="tcc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: src/main.c src/node.c
 | 
					main: src/main.c src/node/node.c src/node2d/node2d.c
 | 
				
			||||||
	tcc -o $@ -I src $^
 | 
						tcc -o $@ -I src $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								src/main.c
								
								
								
								
							
							
						
						
									
										11
									
								
								src/main.c
								
								
								
								
							| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
#include<stdio.h>
 | 
					#include<stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "node.h"
 | 
					#include "node/node.h"
 | 
				
			||||||
 | 
					#include "node2d/node2d.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int argc, char* *argv){
 | 
					int main(int argc, char* *argv){
 | 
				
			||||||
    NOD_Node *distros = NOD_CreateNode("Distros");
 | 
					    NOD_Node *distros = NOD_CreateNode("Distros");
 | 
				
			||||||
| 
						 | 
					@ -20,6 +21,12 @@ int main(int argc, char* *argv){
 | 
				
			||||||
    NOD_Node *openbsd = NOD_CreateNode("OpenBSD");
 | 
					    NOD_Node *openbsd = NOD_CreateNode("OpenBSD");
 | 
				
			||||||
    NOD_Node *debianbsd = NOD_CreateNode("Debian GNU/kFreeBSD");
 | 
					    NOD_Node *debianbsd = NOD_CreateNode("Debian GNU/kFreeBSD");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    NOD_Node2D *point = NOD_CreateNode2D("Point2D");
 | 
				
			||||||
 | 
					    point->pos.x = 2;
 | 
				
			||||||
 | 
					    printf("The X value of '%s' is %d!\n", point->node.name, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    NOD_NodeAddChild(debian, point);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOD_NodeAddChild(distros, linoox);
 | 
					    NOD_NodeAddChild(distros, linoox);
 | 
				
			||||||
    NOD_NodeAddChild(distros, bsd);
 | 
					    NOD_NodeAddChild(distros, bsd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,8 +50,10 @@ int main(int argc, char* *argv){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //NOD_NodeUnparent(child2);
 | 
					    //NOD_NodeUnparent(child2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOD_PrintNodeTree(distros);
 | 
					    NOD_PrintNodeTree(distros);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    NOD_DestroyNodeBranch(distros);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,22 +5,27 @@
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NOD_Node *NOD_CreateNode(char *name){
 | 
					NOD_Node *NOD_CreateNode(char *name){
 | 
				
			||||||
   NOD_Node *node = malloc(sizeof(NOD_Node));
 | 
					  return NOD_CreateNodeEX("Node", name);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if(node != NULL){
 | 
					NOD_Node *NOD_CreateNodeEX(char* type, char *name){
 | 
				
			||||||
     node->name = name;
 | 
					  NOD_Node *node = malloc(sizeof(NOD_Node));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     node->parent = NULL;
 | 
					  if(node != NULL){
 | 
				
			||||||
     node->childv = NULL;
 | 
					    node->name = name;
 | 
				
			||||||
     node->childc = 0;
 | 
					    node->type = type;
 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   return node;
 | 
					    node->parent = NULL;
 | 
				
			||||||
 | 
					    node->childv = NULL;
 | 
				
			||||||
 | 
					    node->childc = 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return node;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void NOD_DestroyNode(NOD_Node *node){
 | 
					void NOD_DestroyNode(NOD_Node *node){
 | 
				
			||||||
  if(node != NULL){
 | 
					  if(node != NULL){
 | 
				
			||||||
    printf("NOD_Info: Deleting node \"%s\"\n", node->name);
 | 
					    /*printf("NOD_Info: Deleting node \"%s\"\n", node->name);*/
 | 
				
			||||||
    /** Cleanup dependencies on this node by its parent */
 | 
					    /** Cleanup dependencies on this node by its parent */
 | 
				
			||||||
    NOD_NodeUnparent(node);
 | 
					    NOD_NodeUnparent(node);
 | 
				
			||||||
    free(node);
 | 
					    free(node);
 | 
				
			||||||
| 
						 | 
					@ -128,9 +133,9 @@ void NOD_NodeUnparent(NOD_Node *node){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Free allocated memory if last child */
 | 
					        /* Free allocated memory if last child */
 | 
				
			||||||
        if(i + 1 == parent->childc){
 | 
					        if(i + 1 == parent->childc){
 | 
				
			||||||
          fprintf(stderr,
 | 
					          /*fprintf(stderr,
 | 
				
			||||||
                  "NOD_Debug: Freeing last child \"%s\" of vector \"%s\"...\n",
 | 
					                  "NOD_Debug: Freeing last child \"%s\" of vector \"%s\"...\n",
 | 
				
			||||||
                  node->name, parent->name);
 | 
					                  node->name, parent->name);*/
 | 
				
			||||||
          parent->childv = realloc(parent->childv, sizeof(node)  *parent->childc);
 | 
					          parent->childv = realloc(parent->childv, sizeof(node)  *parent->childc);
 | 
				
			||||||
          parent->childc--;
 | 
					          parent->childc--;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -171,7 +176,7 @@ void nodetree_print_branch(NOD_Node *node, char* level){
 | 
				
			||||||
        strcat(level, "n");
 | 
					        strcat(level, "n");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    printf("%s\n", node->name);
 | 
					    printf("%s (%s)\n", node->name, node->type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** Recurse */
 | 
					    /** Recurse */
 | 
				
			||||||
    for(int i = 0; i < node->childc; i++){
 | 
					    for(int i = 0; i < node->childc; i++){
 | 
				
			||||||
| 
						 | 
					@ -189,7 +194,7 @@ void NOD_PrintNodeTree(NOD_Node *node){
 | 
				
			||||||
  if(node != NULL){
 | 
					  if(node != NULL){
 | 
				
			||||||
    char* level = strdup("");
 | 
					    char* level = strdup("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    printf("%s\n", node->name);
 | 
					    printf("%s (%s)\n", node->name, node->type);
 | 
				
			||||||
    for(int i = 0; i < node->childc; i++){
 | 
					    for(int i = 0; i < node->childc; i++){
 | 
				
			||||||
      nodetree_print_branch(node->childv[i], level);
 | 
					      nodetree_print_branch(node->childv[i], level);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct node{
 | 
					typedef struct node{
 | 
				
			||||||
  char *name;
 | 
					  char *name;
 | 
				
			||||||
 | 
					  char *type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** childc keeps track of allocated space,
 | 
					  /** childc keeps track of allocated space,
 | 
				
			||||||
      not amount of children. For that use
 | 
					      not amount of children. For that use
 | 
				
			||||||
| 
						 | 
					@ -11,9 +12,12 @@ typedef struct node{
 | 
				
			||||||
  struct node* *childv;
 | 
					  struct node* *childv;
 | 
				
			||||||
  struct node *parent;
 | 
					  struct node *parent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void* data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} NOD_Node;
 | 
					} NOD_Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NOD_Node *NOD_CreateNode(char *name);
 | 
					NOD_Node *NOD_CreateNode(char *name);
 | 
				
			||||||
 | 
					NOD_Node *NOD_CreateNodeEX(char *type, char *name);
 | 
				
			||||||
void NOD_DestroyNode(NOD_Node *node);
 | 
					void NOD_DestroyNode(NOD_Node *node);
 | 
				
			||||||
void NOD_DestroyNodeBranch(NOD_Node *node);
 | 
					void NOD_DestroyNodeBranch(NOD_Node *node);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					#include "node2d.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NOD_Node2D *NOD_CreateNode2D(char *name){
 | 
				
			||||||
 | 
					  NOD_Node2D *node = NULL;
 | 
				
			||||||
 | 
					  NOD_Node *plain_node = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  plain_node = NOD_CreateNodeEX("Node2D", name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(plain_node != NULL){
 | 
				
			||||||
 | 
					    plain_node = realloc(plain_node, sizeof(NOD_Node2D));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(plain_node != NULL){
 | 
				
			||||||
 | 
					      node = (NOD_Node2D*)plain_node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      node->pos.x = 0;
 | 
				
			||||||
 | 
					      node->pos.y = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return node;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					#include"../node/node.h"
 | 
				
			||||||
 | 
					#include"../types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include<stdio.h>
 | 
				
			||||||
 | 
					#include<stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct node_2d{
 | 
				
			||||||
 | 
					  NOD_Node node;
 | 
				
			||||||
 | 
					  vector2Di pos;
 | 
				
			||||||
 | 
					} NOD_Node2D;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NOD_Node2D *NOD_CreateNode2D(char *name);
 | 
				
			||||||
 | 
					void NOD_DestroyNode2D(NOD_Node *node);
 | 
				
			||||||
		Loading…
	
		Reference in New Issue