7 Boolean* allocBooleanVar(VarType t) {
8 BooleanVar* This=(BooleanVar *) ourmalloc(sizeof (BooleanVar));
9 GETBOOLEANTYPE(This)=BOOLEANVAR;
10 GETBOOLEANVALUE(This) = BV_UNDEFINED;
11 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
14 initDefVectorBoolean(GETBOOLEANPARENTS(This));
18 Boolean* allocBooleanOrder(Order* order, uint64_t first, uint64_t second) {
19 BooleanOrder* This=(BooleanOrder *) ourmalloc(sizeof (BooleanOrder));
20 GETBOOLEANTYPE(This)=ORDERCONST;
21 GETBOOLEANVALUE(This) = BV_UNDEFINED;
22 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
26 pushVectorBoolean(&order->constraints, &This->base);
27 initDefVectorBoolean(GETBOOLEANPARENTS(This));
28 return & This -> base;
31 Boolean * allocBooleanPredicate(Predicate * predicate, Element ** inputs, uint numInputs, Boolean* undefinedStatus){
32 BooleanPredicate* This = (BooleanPredicate*) ourmalloc(sizeof(BooleanPredicate));
33 GETBOOLEANTYPE(This)= PREDICATEOP;
34 GETBOOLEANVALUE(This) = BV_UNDEFINED;
35 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
36 This->predicate=predicate;
37 initArrayInitElement(&This->inputs, inputs, numInputs);
38 initDefVectorBoolean(GETBOOLEANPARENTS(This));
40 for(uint i=0;i<numInputs;i++) {
41 pushVectorASTNode(GETELEMENTPARENTS(inputs[i]), (ASTNode *)This);
43 initPredicateEncoding(&This->encoding, (Boolean *) This);
44 This->undefStatus = undefinedStatus;
48 Boolean * allocBooleanLogicArray(CSolver *solver, LogicOp op, Boolean ** array, uint asize){
49 BooleanLogic * This = ourmalloc(sizeof(BooleanLogic));
50 GETBOOLEANTYPE(This) = LOGICOP;
51 GETBOOLEANVALUE(This) = BV_UNDEFINED;
52 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
54 initDefVectorBoolean(GETBOOLEANPARENTS(This));
55 initArrayInitBoolean(&This->inputs, array, asize);
56 pushVectorBoolean(solver->allBooleans, (Boolean *) This);
60 void deleteBoolean(Boolean * This) {
61 switch(GETBOOLEANTYPE(This)){
63 BooleanPredicate *bp=(BooleanPredicate *)This;
64 deleteInlineArrayElement(& bp->inputs );
65 deleteFunctionEncoding(& bp->encoding);
69 BooleanLogic* bl = (BooleanLogic*) This;
70 deleteInlineArrayBoolean(&bl->inputs);
76 deleteVectorArrayBoolean(GETBOOLEANPARENTS(This));
81 Polarity negatePolarity(Polarity This){
95 BooleanValue negateBooleanValue(BooleanValue This){
101 return BV_MUSTBEFALSE;
103 return BV_MUSTBETRUE;