Inter Order is gone...
[satune.git] / src / AST / boolean.h
index 928ba41bc78fec2d252e5bb0b6da2cb559752dba..b24fa3f83e10d9cf093b6478bb515e7710507317 100644 (file)
 
 #define GETBOOLEANTYPE(o) GETASTNODETYPE(o)
 #define GETBOOLEANPARENTS(o) (&((Boolean *)(o))->parents)
+#define GETBOOLEANPOLARITY(b) (((Boolean*)b)->polarity)
+#define GETBOOLEANVALUE(b) (((Boolean*)b)->boolVal)
 
 struct Boolean {
        ASTNode base;
+       Polarity polarity;
+       BooleanValue boolVal;
        VectorBoolean parents;
 };
 
@@ -44,14 +48,16 @@ struct BooleanPredicate {
        Predicate * predicate;
        FunctionEncoding encoding;
        ArrayElement inputs;
+       Boolean* undefStatus;
 };
 
 Boolean * allocBooleanVar(VarType t);
 Boolean * allocBooleanOrder(Order * order, uint64_t first, uint64_t second);
-Boolean * allocBooleanPredicate(Predicate * predicate, Element ** inputs, uint numInputs);
+Boolean * allocBooleanPredicate(Predicate * predicate, Element ** inputs, uint numInputs, Boolean* undefinedStatus);
 Boolean * allocBooleanLogicArray(CSolver *solver, LogicOp op, Boolean ** array, uint asize);
 void deleteBoolean(Boolean * This);
-
+Polarity negatePolarity(Polarity This);
+BooleanValue negateBooleanValue(BooleanValue This);
 static inline FunctionEncoding* getPredicateFunctionEncoding(BooleanPredicate* func){
        return &func->encoding;
 }