(de)serializer: BooleanOrder + BooleanVar
[satune.git] / src / Serialize / deserializer.cc
index 1c45a697a23f59e8e15d73f8464b4e834ca2b67a..163bd199e643e86a90a9b7eaf8b0b7248cebcbef 100644 (file)
@@ -39,6 +39,9 @@ CSolver * Deserializer::deserialize(){
                        case BOOLEANEDGE:
                                deserializeBooleanEdge();
                                break;
+                       case BOOLEANVAR:
+                               deserializeBooleanVar();
+                               break;
                        default:
                                ASSERT(0);
                }
@@ -56,3 +59,25 @@ void Deserializer::deserializeBooleanEdge(){
        BooleanEdge res(b);
        solver->addConstraint(isNegated?res.negate():res);
 }
+
+void Deserializer::deserializeBooleanVar(){
+       BooleanVar *b;
+       myread(&b, sizeof(BooleanVar*));
+       VarType vtype;
+       myread(&vtype, sizeof(VarType));
+       map.put(b, solver->getBooleanVar(vtype).getBoolean());
+}
+
+void Deserializer::deserializeBooleanOrder(){
+       BooleanOrder* bo_ptr;
+       myread(&bo_ptr, sizeof(BooleanOrder*));
+       Order* optr;
+       myread(&optr, sizeof(Order*));
+       uint64_t first;
+       myread(&first, sizeof(uint64_t));
+       uint64_t second;
+       myread(&second, sizeof(uint64_t));
+       ASSERT(map.contains(optr));
+       Order* order  = (Order*) map.get(optr);
+       map.put(bo_ptr, solver->orderConstraint(order, first, second).getBoolean());
+}
\ No newline at end of file