32eed4a0de824a1d63d021682e6cad3ae009dba6
[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 "signature.h"
7 #include <iostream>
8 #include <fstream>
9 using namespace std;
10
11 class Interpreter{
12 public:
13         Interpreter(CSolver *solver);
14         void encode();
15         int solve();
16         void writeToFile(string str);
17         uint64_t getValue(Element *element);
18         bool getBooleanValue(Boolean *element);
19         virtual ValuedSignature *getBooleanSignature(uint id) = 0;
20         virtual ValuedSignature *getElementSignature(uint id, Signature *ssig) = 0;
21         virtual Signature *getSetSignature(uint id, Set *set) = 0;
22         virtual ~Interpreter();
23 protected:
24         virtual void dumpFooter() = 0;
25         virtual void dumpHeader() = 0;
26         uint getTimeout();
27         virtual void compileRunCommand(char * command, size_t size) = 0;
28         string encodeConstraint(BooleanEdge constraint);
29         virtual int getResult() = 0;
30         virtual string negateConstraint(string constr) = 0;
31         virtual void dumpAllConstraints(Vector<char *> &facts) = 0;
32         virtual string encodeBooleanLogic( BooleanLogic *bl) = 0;
33         virtual string encodeBooleanVar( BooleanVar *bv) = 0;
34         string encodePredicate( BooleanPredicate *bp);
35         string encodeOperatorPredicate(BooleanPredicate *constraint);
36         virtual string processElementFunction(ElementFunction *element, ValuedSignature *signature) = 0;
37         virtual string operatorPredicateConstraint(CompOp op, ValuedSignature *elemSig1, ValuedSignature *elemSig2) = 0;
38         CSolver *csolver;
39         SignatureEnc sigEnc;
40         ofstream output;
41 };
42
43 #endif