Fix some of the memory leaks
[satune.git] / src / AST / order.c
index 47cc374a1c4fa431c92fa54bd944b15885a95089..b1b52e3e82df9fc52b4e5099a5f646a041eecec3 100644 (file)
@@ -5,18 +5,33 @@
 
 
 Order* allocOrder(OrderType type, Set * set){
-    Order* order = (Order*)ourmalloc(sizeof(Order));
-    order->set=set;
-    order->constraints = allocDefVectorBoolean();
-    order->type=type;
-    return order;
+       Order* order = (Order*)ourmalloc(sizeof(Order));
+       order->set=set;
+       allocInlineDefVectorBoolean(& order->constraints);
+       order->type=type;
+       allocOrderEncoding(& order->order, order);
+       order->boolsToConstraints = NULL;
+       return order;
+}
+
+void initializeOrderHashTable(Order* order){
+       order->boolsToConstraints= allocHashTableBoolConst(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR);
+}
+
+void addOrderConstraint(Order* order, BooleanOrder* constraint){
+       pushVectorBoolean( &order->constraints, (Boolean*) constraint);
+}
+
+void setOrderEncodingType(Order* order, OrderEncodingType type){
+       order->order.type = type;
 }
 
 void deleteOrder(Order* order){
-    uint size = getSizeVectorBoolean( order->constraints );
-    for(uint i=0; i<size; i++){
-       deleteBoolean( getVectorBoolean(order->constraints, i) );
-    }
-    deleteSet( order->set);
-    ourfree(order);
-}
\ No newline at end of file
+       deleteVectorArrayBoolean(& order->constraints);
+       deleteOrderEncoding(& order->order);
+       if(order->boolsToConstraints!= NULL) {
+               resetAndDeleteHashTableBoolConst(order->boolsToConstraints);
+               deleteHashTableBoolConst(order->boolsToConstraints);
+       }
+       ourfree(order);
+}