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;
25 This->second = second;
26 pushVectorBooleanOrder(&order->constraints, This);
27 initDefVectorBoolean(GETBOOLEANPARENTS(This));
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 = (BooleanLogic *) 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));