5 #include "ordergraph.h"
7 #include "orderpairresolver.h"
9 Order::Order(OrderType _type, Set *_set) :
17 void Order::addOrderConstraint(BooleanOrder *constraint) {
18 constraints.push(constraint);
19 useditems.add(constraint->first);
20 useditems.add(constraint->second);
23 void Order::setOrderEncodingType(OrderEncodingType type) {
27 Order *Order::clone(CSolver *solver, CloneMap *map) {
28 Order *o = (Order *)map->get(this);
31 o = solver->createOrder(type, set->clone(solver, map));
36 HashtableOrderPair *Order::getOrderPairTable() {
37 ASSERT( encoding.resolver != NULL);
38 if (OrderPairResolver *t = dynamic_cast<OrderPairResolver *>(encoding.resolver)) {
39 return t->getOrderPairTable();
51 void Order::serialize(Serializer *serializer) {
52 if (serializer->isSerialized(this))
54 serializer->addObject(this);
55 set->serialize(serializer);
56 ASTNodeType asttype = ORDERTYPE;
57 serializer->mywrite(&asttype, sizeof(ASTNodeType));
59 serializer->mywrite(&This, sizeof(Order *));
60 serializer->mywrite(&type, sizeof(OrderType));
61 serializer->mywrite(&set, sizeof(Set *));
65 model_print("{Order<%p> on Set:\n", this);