Adding function operator handler+ omitting some redundant codes
[satune.git] / src / AST / set.c
1 #include "set.h"
2 #include <stddef.h>
3
4 Set * allocSet(VarType t, uint64_t* elements, uint num) {
5         Set * tmp=(Set *)ourmalloc(sizeof(Set));
6         tmp->type=t;
7         tmp->isRange=false;
8         tmp->low=0;
9         tmp->high=0;
10         tmp->members=allocVectorArrayInt(num, elements);
11         return tmp;
12 }
13
14 Set * allocSetRange(VarType t, uint64_t lowrange, uint64_t highrange) {
15         Set * tmp=(Set *)ourmalloc(sizeof(Set));
16         tmp->type=t;
17         tmp->isRange=true;
18         tmp->low=lowrange;
19         tmp->high=highrange;
20         tmp->members=NULL;
21         return tmp;
22 }
23
24 bool existsInSet(Set* set, uint64_t element){
25         if(set->isRange){
26                 return element >= set->low && element <= set->high;
27         }else {
28                 uint size = getSizeVectorInt(set->members);
29                 for(uint i=0; i< size; i++){
30                         if(element == getVectorInt(set->members, i))
31                                 return true;
32                 }
33                 return false;
34         }
35 }
36
37 uint getSetSize(Set* set){
38         if(set->isRange){
39                 return set->high- set->low+1;
40         }else{
41                 return getSizeVectorInt(set->members);
42         }
43 }
44
45 void deleteSet(Set * set) {
46         if (!set->isRange)
47                 deleteVectorInt(set->members);
48         ourfree(set);
49 }