Switch array struct to class
[satune.git] / src / AST / boolean.cc
1 #include "boolean.h"
2 #include "structs.h"
3 #include "csolver.h"
4 #include "element.h"
5 #include "order.h"
6
7 Boolean::Boolean(ASTNodeType _type) : ASTNode(_type), polarity(P_UNDEFINED), boolVal(BV_UNDEFINED) {
8         initDefVectorBoolean(GETBOOLEANPARENTS(this));  
9 }
10
11 BooleanVar::BooleanVar(VarType t) : Boolean(BOOLEANVAR), vtype(t), var(E_NULL) {
12 }
13
14 BooleanOrder::BooleanOrder(Order *_order, uint64_t _first, uint64_t _second) : Boolean(ORDERCONST), order(_order), first(_first), second(_second) {
15         pushVectorBooleanOrder(&order->constraints, this);
16 }
17
18 BooleanPredicate::BooleanPredicate(Predicate *_predicate, Element **_inputs, uint _numInputs, Boolean *_undefinedStatus) :
19         Boolean(PREDICATEOP),
20         predicate(_predicate),
21         inputs(_inputs, _numInputs),
22         undefStatus(_undefinedStatus) {
23         for (uint i = 0; i < _numInputs; i++) {
24                 pushVectorASTNode(GETELEMENTPARENTS(_inputs[i]), this);
25         }
26         initPredicateEncoding(&encoding, this);
27 }
28
29 BooleanLogic::BooleanLogic(CSolver *solver, LogicOp _op, Boolean **array, uint asize) :
30         Boolean(LOGICOP),
31         op(_op),
32         inputs(array, asize) {
33         pushVectorBoolean(solver->allBooleans, (Boolean *) this);
34 }
35
36 Boolean::~Boolean() {
37         deleteVectorArrayBoolean(GETBOOLEANPARENTS(this));
38 }
39
40 BooleanPredicate::~BooleanPredicate() {
41         deleteFunctionEncoding(&encoding);
42 }