renaming alloyenc to alloy interpreter
[satune.git] / src / Interpreter / interpreter.h
1 #ifndef INTERPRETER_H
2 #define INTERPRETER_H
3
4 #include "classlist.h"
5 #include "signatureenc.h"
6 #include <iostream>
7 #include <fstream>
8 using namespace std;
9
10 class Interpreter{
11 public:
12         Interpreter(CSolver *solver);
13         void encode();
14         int solve();
15         void writeToFile(string str);
16         uint64_t getValue(Element *element);
17         bool getBooleanValue(Boolean *element);
18         virtual ~Interpreter();
19 protected:
20         virtual void dumpFooter() = 0;
21         virtual void dumpHeader() = 0;
22         uint getTimeout();
23         virtual void compileRunCommand(char * command, size_t size) = 0;
24         string encodeConstraint(BooleanEdge constraint);
25         virtual int getResult() = 0;
26         virtual string negateConstraint(string constr) = 0;
27         virtual void dumpAllConstraints(Vector<char *> &facts) = 0;
28         virtual string encodeBooleanLogic( BooleanLogic *bl) = 0;
29         virtual string encodeBooleanVar( BooleanVar *bv) = 0;
30         string encodePredicate( BooleanPredicate *bp);
31         string encodeOperatorPredicate(BooleanPredicate *constraint);
32         virtual string processElementFunction(ElementFunction *element, ElementSig *signature) = 0;
33         virtual string operatorPredicateConstraint(CompOp op, ElementSig *elemSig1, ElementSig *elemSig2) = 0;
34         CSolver *csolver;
35         SignatureEnc sigEnc;
36         ofstream output;
37 };
38
39 #endif