X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=src%2FBackend%2Forderpair.h;h=f65064819da76d111fc87d1eb9862971c7e7fe86;hb=7ce425ac7ed2ff3b348d1d8be37df8a5e3db21f2;hp=21bddd794dcbc6906af73f58ec3aba2d06786fc2;hpb=06c6e560d30a2d3774c379e28ddf3c8b9e5a19a6;p=satune.git diff --git a/src/Backend/orderpair.h b/src/Backend/orderpair.h index 21bddd7..f650648 100644 --- a/src/Backend/orderpair.h +++ b/src/Backend/orderpair.h @@ -1,4 +1,4 @@ -/* +/* * File: orderpair.h * Author: hamed * @@ -10,14 +10,25 @@ #include "classlist.h" #include "mymemory.h" +#include "constraint.h" -struct OrderPair{ +class OrderPair { +public: + OrderPair(uint64_t first, uint64_t second, Edge constraint = E_NULL); + OrderPair(); + virtual ~OrderPair(); + virtual Edge getConstraint(); + virtual bool getConstraintValue(CSolver* solver); + //for the cases that we swap first and second ... For total order is straight forward. + // but for partial order it has some complexity which should be hidden ... -HG + virtual Edge getNegatedConstraint(); + virtual bool getNegatedConstraintValue(CSolver* solver); uint64_t first; uint64_t second; -}; + CMEMALLOC; +protected: + Edge constraint; +}; -OrderPair* allocOrderPair(uint64_t first, uint64_t second); -void deleteOrderPair(OrderPair* pair); - -#endif /* ORDERPAIR_H */ +#endif/* ORDERPAIR_H */