Add all C files to tabbing file
[satune.git] / src / AST / boolean.c
1 #include "boolean.h"
2 #include "structs.h"
3 #include "csolver.h"
4 #include "element.h"
5
6 Boolean* allocBoolean(VarType t) {
7         BooleanVar* tmp=(BooleanVar *) ourmalloc(sizeof (BooleanVar));
8         GETBOOLEANTYPE(tmp)=BOOLEANVAR;
9         tmp->vtype=t;
10         tmp->var=NULL;
11         allocInlineDefVectorBoolean(GETBOOLEANPARENTS(tmp));
12         return & tmp->base;
13 }
14
15 Boolean* allocBooleanOrder(Order* order, uint64_t first, uint64_t second) {
16         BooleanOrder* tmp=(BooleanOrder *) ourmalloc(sizeof (BooleanOrder));
17         GETBOOLEANTYPE(tmp)=ORDERCONST;
18         tmp->order=order;
19         tmp->first=first;
20         tmp->second=second;
21         allocInlineDefVectorBoolean(GETBOOLEANPARENTS(tmp));
22         return & tmp -> base;
23 }
24
25 Boolean * allocBooleanPredicate(Predicate * predicate, Element ** inputs, uint numInputs){
26         BooleanPredicate* This = (BooleanPredicate*) ourmalloc(sizeof(BooleanPredicate));
27         GETBOOLEANTYPE(This)= PREDICATEOP;
28         This->predicate=predicate;
29         allocInlineArrayInitElement(&This->inputs, inputs, numInputs);
30         allocInlineDefVectorBoolean(GETBOOLEANPARENTS(This));
31
32         for(uint i=0;i<numInputs;i++) {
33                 pushVectorASTNode(GETELEMENTPARENTS(inputs[i]), (ASTNode *)This);
34         }
35         return & This->base;
36 }
37
38 Boolean * allocBooleanLogicArray(CSolver *solver, LogicOp op, Boolean ** array, uint asize){
39         BooleanLogic * This = ourmalloc(sizeof(BooleanLogic));
40         allocInlineDefVectorBoolean(GETBOOLEANPARENTS(This));
41         allocInlineArrayInitBoolean(&This->inputs, array, asize);
42         pushVectorBoolean(solver->allBooleans, (Boolean *) This);
43         return & This->base;
44 }
45
46 void deleteBoolean(Boolean * This) {
47         switch(GETBOOLEANTYPE(This)){
48                 case PREDICATEOP:
49                         deleteInlineArrayElement(& ((BooleanPredicate*)This)->inputs );
50                         break;
51                 default:
52                         break;
53         }
54         deleteVectorArrayBoolean(GETBOOLEANPARENTS(This));
55         ourfree(This);
56 }