Bug fix: typos
[satune.git] / src / AST / function.h
1 #ifndef FUNCTION_H
2 #define FUNCTION_H
3 #include "classlist.h"
4 #include "mymemory.h"
5 #include "ops.h"
6 #include "astops.h"
7 #include "structs.h"
8
9 class Function {
10 public:
11         Function(FunctionType _type) : type(_type) {}
12         FunctionType type;
13         virtual ~Function() {}
14         virtual Function *clone(CSolver *solver, CloneMap *map) {ASSERT(0); return NULL;}
15         virtual void serialize(Serializer *serialiezr) = 0;
16         virtual void print() = 0;
17         virtual Set *getRange() = 0;
18         CMEMALLOC;
19 };
20
21 class FunctionOperator : public Function {
22 public:
23         ArithOp op;
24         Set *range;
25         OverFlowBehavior overflowbehavior;
26         FunctionOperator(ArithOp op, Set *range, OverFlowBehavior overflowbehavior);
27         uint64_t applyFunctionOperator(uint numVals, uint64_t *values);
28         bool isInRangeFunction(uint64_t val);
29         Function *clone(CSolver *solver, CloneMap *map);
30         virtual void serialize(Serializer *serialiezr);
31         virtual void print();
32         Set *getRange() {return range;}
33         CMEMALLOC;
34 };
35
36 class FunctionTable : public Function {
37 public:
38         Table *table;
39         UndefinedBehavior undefBehavior;
40         FunctionTable (Table *table, UndefinedBehavior behavior);
41         Function *clone(CSolver *solver, CloneMap *map);
42         virtual void serialize(Serializer *serialiezr);
43         virtual void print();
44         Set *getRange();
45         CMEMALLOC;
46 };
47
48 #endif