13c2c09ee9607dc4786d661843702f9e8aa76b04
[satune.git] / src / Encoders / ordernode.c
1 #include "ordernode.h"
2 #include "orderedge.h"
3
4 OrderNode* allocOrderNode(uint64_t id, Order* order){
5         OrderNode* This = (OrderNode*) ourmalloc(sizeof(OrderNode));
6         This->id = id;
7         This->order = order;
8         This->inEdges = allocHashSetOrderEdge(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
9         This->outEdges = allocHashSetOrderEdge(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
10         return This;
11 }
12
13 void deleteOrderNode(OrderNode* node){
14         //NOTE: each node only responsible to delete its outgoing edges and 
15         // only delete the set for incoming edges (incoming edges are going
16         // to be deleted by other OrderNodes that they go out from them ...
17         deleteHashSetOrderEdge(node->inEdges);
18         HSIteratorOrderEdge* iterator = iteratorOrderEdge(node->outEdges);
19         while(hasNextOrderEdge(iterator)){
20                 OrderEdge* edge = nextOrderEdge(iterator);
21                 deleteOrderEdge(edge);
22         }
23         deleteIterOrderEdge(iterator);
24         deleteHashSetOrderEdge(node->outEdges);
25         ourfree(node);
26 }