making the qsort deterministic for BooleanEdge
[satune.git] / src / AST / boolean.cc
index 939f937d37fa4b02e516cb6f75920cf7a110b0e2..647f548d352f21e5a98c149ce519b427941099bc 100644 (file)
@@ -5,11 +5,13 @@
 #include "order.h"
 #include "predicate.h"
 
 #include "order.h"
 #include "predicate.h"
 
+uint64_t Boolean::counter = 0;
+
 Boolean::Boolean(ASTNodeType _type) :
        ASTNode(_type),
        polarity(P_UNDEFINED),
        boolVal(BV_UNDEFINED),
 Boolean::Boolean(ASTNodeType _type) :
        ASTNode(_type),
        polarity(P_UNDEFINED),
        boolVal(BV_UNDEFINED),
-       parents() {
+       parents(), id(counter++) {
 }
 
 BooleanConst::BooleanConst(bool _isTrue) :
 }
 
 BooleanConst::BooleanConst(bool _isTrue) :
@@ -115,11 +117,11 @@ void BooleanVar::serialize(Serializer *serializer) {
 }
 
 void BooleanVar::print() {
 }
 
 void BooleanVar::print() {
-       model_print("BooleanVar:%lu\n", (uintptr_t)this);
+       model_print("BooleanVar<%p>\n", this);
 }
 
 void BooleanConst::print() {
 }
 
 void BooleanConst::print() {
-       model_print("BooleanConst:%s\n", istrue ? "TRUE" : "FALSE");
+       model_print("BooleanConst<%p>:%s\n", this, istrue ? "TRUE" : "FALSE");
 }
 
 void BooleanOrder::serialize(Serializer *serializer) {
 }
 
 void BooleanOrder::serialize(Serializer *serializer) {
@@ -137,7 +139,7 @@ void BooleanOrder::serialize(Serializer *serializer) {
 }
 
 void BooleanOrder::print() {
 }
 
 void BooleanOrder::print() {
-       model_print("{BooleanOrder: First= %lu, Second = %lu on Order:\n", first, second);
+       model_print("{BooleanOrder<%p>: First= %lu, Second = %lu on Order:\n", this, first, second);
        order->print();
        model_print("}\n");
 }
        order->print();
        model_print("}\n");
 }
@@ -169,7 +171,7 @@ void BooleanPredicate::serialize(Serializer *serializer) {
 }
 
 void BooleanPredicate::print() {
 }
 
 void BooleanPredicate::print() {
-       model_print("{BooleanPredicate:\n");
+       model_print("{BooleanPredicate<%p>:\n", this);
        predicate->print();
        model_print("elements:\n");
        uint size = inputs.getSize();
        predicate->print();
        model_print("elements:\n");
        uint size = inputs.getSize();
@@ -201,7 +203,7 @@ void BooleanLogic::serialize(Serializer *serializer) {
 }
 
 void BooleanLogic::print() {
 }
 
 void BooleanLogic::print() {
-       model_print("{BooleanLogic: %s\n",
+       model_print("{BooleanLogic<%p>: %s\n", this,
                                                        op == SATC_AND ? "AND" : op == SATC_OR ? "OR" : op == SATC_NOT ? "NOT" :
                                                        op == SATC_XOR ? "XOR" : op == SATC_IFF ? "IFF" : "IMPLIES");
        uint size = inputs.getSize();
                                                        op == SATC_AND ? "AND" : op == SATC_OR ? "OR" : op == SATC_NOT ? "NOT" :
                                                        op == SATC_XOR ? "XOR" : op == SATC_IFF ? "IFF" : "IMPLIES");
        uint size = inputs.getSize();