X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FAST%2Fboolean.h;h=cdc05a6be55487fd5fcc5db483be2067fc920562;hp=17e29b6066fc4fcb4a85af5a77b88613d9b0106c;hb=4221735881b9d1cd53ef410d9448efd2d12a51ad;hpb=93d68c5fed12b2c33c73f6763c10f49bf6bf150c diff --git a/src/AST/boolean.h b/src/AST/boolean.h index 17e29b6..cdc05a6 100644 --- a/src/AST/boolean.h +++ b/src/AST/boolean.h @@ -5,6 +5,8 @@ #include "ops.h" #include "structs.h" #include "astnode.h" +#include "functionencoding.h" +#include "constraint.h" /** This is a little sketchy, but apparently legit. @@ -12,15 +14,19 @@ #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; }; struct BooleanOrder { Boolean base; - Order* order; + Order *order; uint64_t first; uint64_t second; }; @@ -28,26 +34,30 @@ struct BooleanOrder { struct BooleanVar { Boolean base; VarType vtype; - Constraint * var; + Edge var; }; struct BooleanLogic { Boolean base; LogicOp op; - Boolean ** array; - uint numArray; + ArrayBoolean inputs; }; struct BooleanPredicate { Boolean base; - Predicate * predicate; - VectorElement* inputs; + Predicate *predicate; + FunctionEncoding encoding; + ArrayElement inputs; + Boolean *undefStatus; }; -Boolean * allocBoolean(VarType t); -Boolean * allocBooleanOrder(Order * order, uint64_t first, uint64_t second); -Boolean * allocBooleanPredicate(Predicate * predicate, Element ** inputs, uint numInputs); -Boolean * allocBooleanLogicArray(CSolver *solver, LogicOp op, Boolean ** array, uint asize); -void deleteBoolean(Boolean * This); +Boolean *allocBooleanVar(VarType t); +Boolean *allocBooleanOrder(Order *order, uint64_t first, uint64_t second); +Boolean *allocBooleanPredicate(Predicate *predicate, Element **inputs, uint numInputs, Boolean *undefinedStatus); +Boolean *allocBooleanLogicArray(CSolver *solver, LogicOp op, Boolean **array, uint asize); +void deleteBoolean(Boolean *This); +static inline FunctionEncoding *getPredicateFunctionEncoding(BooleanPredicate *func) { + return &func->encoding; +} #endif