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 * allocBooleanInterOrder(Order * order1, uint64_t first,Order* order2, uint64_t second){
32 BooleanInterOrder* This=(BooleanInterOrder *) ourmalloc(sizeof (BooleanInterOrder));
33 GETBOOLEANTYPE(This)=INTERORDERCONST;
34 GETBOOLEANVALUE(This) = BV_UNDEFINED;
35 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
37 This->order2 = order2;
40 pushVectorBoolean(&order1->constraints, &This->base);
41 initDefVectorBoolean(GETBOOLEANPARENTS(This));
42 return & This -> base;
45 Boolean * allocBooleanPredicate(Predicate * predicate, Element ** inputs, uint numInputs, Boolean* undefinedStatus){
46 BooleanPredicate* This = (BooleanPredicate*) ourmalloc(sizeof(BooleanPredicate));
47 GETBOOLEANTYPE(This)= PREDICATEOP;
48 GETBOOLEANVALUE(This) = BV_UNDEFINED;
49 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
50 This->predicate=predicate;
51 initArrayInitElement(&This->inputs, inputs, numInputs);
52 initDefVectorBoolean(GETBOOLEANPARENTS(This));
54 for(uint i=0;i<numInputs;i++) {
55 pushVectorASTNode(GETELEMENTPARENTS(inputs[i]), (ASTNode *)This);
57 initPredicateEncoding(&This->encoding, (Boolean *) This);
58 This->undefStatus = undefinedStatus;
62 Boolean * allocBooleanLogicArray(CSolver *solver, LogicOp op, Boolean ** array, uint asize){
63 BooleanLogic * This = ourmalloc(sizeof(BooleanLogic));
64 GETBOOLEANTYPE(This) = LOGICOP;
65 GETBOOLEANVALUE(This) = BV_UNDEFINED;
66 GETBOOLEANPOLARITY(This) = P_UNDEFINED;
68 initDefVectorBoolean(GETBOOLEANPARENTS(This));
69 initArrayInitBoolean(&This->inputs, array, asize);
70 pushVectorBoolean(solver->allBooleans, (Boolean *) This);
74 void deleteBoolean(Boolean * This) {
75 switch(GETBOOLEANTYPE(This)){
77 BooleanPredicate *bp=(BooleanPredicate *)This;
78 deleteInlineArrayElement(& bp->inputs );
79 deleteFunctionEncoding(& bp->encoding);
83 BooleanLogic* bl = (BooleanLogic*) This;
84 deleteInlineArrayBoolean(&bl->inputs);
90 deleteVectorArrayBoolean(GETBOOLEANPARENTS(This));
95 Polarity negatePolarity(Polarity This){
109 BooleanValue negateBooleanValue(BooleanValue This){
115 return BV_MUSTBEFALSE;
117 return BV_MUSTBETRUE;