Support for pruning unused order elements
[satune.git] / src / AST / order.cc
index 3920d3b88b7ac1cfc91e815407bb2c2f9d3a21ae..82e4c5329d591b0826704c750e80cc62ff50c3c5 100644 (file)
@@ -16,6 +16,8 @@ Order::Order(OrderType _type, Set *_set) :
 
 void Order::addOrderConstraint(BooleanOrder *constraint) {
        constraints.push(constraint);
+       useditems.add(constraint->first);
+       useditems.add(constraint->second);
 }
 
 void Order::setOrderEncodingType(OrderEncodingType type) {
@@ -31,9 +33,9 @@ Order *Order::clone(CSolver *solver, CloneMap *map) {
        return o;
 }
 
-HashtableOrderPair* Order::getOrderPairTable(){
+HashtableOrderPair *Order::getOrderPairTable() {
        ASSERT( encoding.resolver != NULL);
-       if (OrderPairResolver* t = dynamic_cast<OrderPairResolver*>(encoding.resolver)){
+       if (OrderPairResolver *t = dynamic_cast<OrderPairResolver *>(encoding.resolver)) {
                return t->getOrderPairTable();
        } else {
                ASSERT(0);
@@ -46,15 +48,21 @@ Order::~Order() {
        }
 }
 
-void Order::serialize(Serializer* serializer){
-       if(serializer->isSerialized(this))
+void Order::serialize(Serializer *serializer) {
+       if (serializer->isSerialized(this))
                return;
        serializer->addObject(this);
        set->serialize(serializer);
        ASTNodeType asttype = ORDERTYPE;
        serializer->mywrite(&asttype, sizeof(ASTNodeType));
-       OrderThis = this;
-       serializer->mywrite(&This, sizeof(Order*));
+       Order *This = this;
+       serializer->mywrite(&This, sizeof(Order *));
        serializer->mywrite(&type, sizeof(OrderType));
        serializer->mywrite(&set, sizeof(Set *));
 }
+
+void Order::print() {
+       model_print("{Order<%p> on Set:\n", this);
+       set->print();
+       model_print("}\n");
+}