X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FAST%2Forder.c;h=92c52ae64069a575a64d538284333fa924fd4c9c;hb=4c9d60b6f6c3656ba0426eaca8af69457bf56dee;hp=dd233b644bd2964e2566d83019897b470f167dbc;hpb=f157726420ac92c6b29ab7b552682629d0f3c4a4;p=satune.git diff --git a/src/AST/order.c b/src/AST/order.c index dd233b6..92c52ae 100644 --- a/src/AST/order.c +++ b/src/AST/order.c @@ -1,37 +1,36 @@ #include "order.h" #include "structs.h" #include "set.h" +#include "boolean.h" - -Order* allocOrder(enum OrderType type, Set * set){ - Order* order = (Order*)ourmalloc(sizeof(Order)); - order->set=set; - order->constraints = allocDefVectorBoolean(); - order->type=type; - return order; +Order* allocOrder(OrderType type, Set * set){ + Order* This = (Order*)ourmalloc(sizeof(Order)); + This->set=set; + initDefVectorBoolean(& This->constraints); + This->type=type; + initOrderEncoding(& This->order, This); + This->orderPairTable = NULL; + return This; } -Boolean* getOrderConstraint(Order* order, uint64_t first, uint64_t second){ - //Probably a bad idea to do a O(n) search through the order... - //We have a hashset data structure, why not use it for O(1) search +void initializeOrderHashTable(Order* This){ + This->orderPairTable=allocHashTableOrderPair(HT_INITIAL_CAPACITY, HT_DEFAULT_FACTOR); +} +void addOrderConstraint(Order* This, BooleanOrder* constraint){ + pushVectorBoolean( &This->constraints, (Boolean*) constraint); +} - //We don't like warnings - return NULL; +void setOrderEncodingType(Order* This, OrderEncodingType type){ + This->order.type = type; +} - /* - uint size = getSizeVectorInt(order->set->members); - //First we need to make sure that first and second are part of the list! - bool exist1=false, exist2=false; - for(int i=0; iset->members, i)==first){ - exist1=true; - }else if(getVectorInt(order->set->members, i) == second){ - exist2=true; - }else if(exist1 && exist2){ - break; - } - } - ASSERT(exist1 && exist2); - */ +void deleteOrder(Order* This){ + deleteVectorArrayBoolean(& This->constraints); + deleteOrderEncoding(& This->order); + if(This->orderPairTable != NULL) { + resetAndDeleteHashTableOrderPair(This->orderPairTable); + deleteHashTableOrderPair(This->orderPairTable); + } + ourfree(This); }