#include "ops.h"
#include "orderencoding.h"
#include "boolean.h"
+#include "orderpair.h"
-struct Order {
+class Order {
+public:
+ Order(OrderType type, Set *set);
+ ~Order();
OrderType type;
Set *set;
- HashTableOrderPair *orderPairTable;
- HashSetOrderElement* elementTable;
+ HashtableOrderPair *orderPairTable;
OrderGraph *graph;
- VectorBooleanOrder constraints;
- OrderEncoding order;
+ Order *clone(CSolver *solver, CloneMap *map);
+ Vector<BooleanOrder *> constraints;
+ OrderEncoding encoding;
+ void setOrderResolver(OrderResolver *_resolver) { ASSERT(encoding.resolver == NULL); encoding.resolver = _resolver;};
+ void initializeOrderHashtable();
+ void initializeOrderElementsHashtable();
+ void addOrderConstraint(BooleanOrder *constraint);
+ void setOrderEncodingType(OrderEncodingType type);
+ CMEMALLOC;
};
-Order *allocOrder(OrderType type, Set *set);
-void initializeOrderHashTable(Order *This);
-void initializeOrderElementsHashTable(Order *This);
-void addOrderConstraint(Order *This, BooleanOrder *constraint);
-void setOrderEncodingType(Order *This, OrderEncodingType type);
-void deleteOrder(Order *This);
#endif