diff options
Diffstat (limited to 'Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/TypeDescriptor.xtend')
-rw-r--r-- | Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/TypeDescriptor.xtend | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/TypeDescriptor.xtend b/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/TypeDescriptor.xtend new file mode 100644 index 00000000..1aa5cf04 --- /dev/null +++ b/Solvers/SMT-Solver/hu.bme.mit.inf.dslreasoner.smt.reasoner/src/hu/bme/mit/inf/dslreasoner/smt/reasoner/TypeDescriptor.xtend | |||
@@ -0,0 +1,44 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.smt.reasoner | ||
2 | |||
3 | import hu.bme.mit.inf.dslreasoner.smtLanguage.SMTBoolTypeReference | ||
4 | import hu.bme.mit.inf.dslreasoner.smtLanguage.SMTComplexTypeReference | ||
5 | import hu.bme.mit.inf.dslreasoner.smtLanguage.SMTIntTypeReference | ||
6 | import hu.bme.mit.inf.dslreasoner.smtLanguage.SMTRealTypeReference | ||
7 | import hu.bme.mit.inf.dslreasoner.smtLanguage.SMTType | ||
8 | import java.util.List | ||
9 | import org.eclipse.xtend.lib.annotations.Accessors | ||
10 | import org.eclipse.xtend.lib.annotations.Data | ||
11 | |||
12 | @Data | ||
13 | class Descriptor<T> { | ||
14 | List<TypeDescriptor> parameterTypes | ||
15 | T relation | ||
16 | } | ||
17 | |||
18 | @Data | ||
19 | class TypeDescriptor { | ||
20 | val boolean logic | ||
21 | val boolean numeric | ||
22 | val SMTType complexType | ||
23 | |||
24 | @Accessors(PUBLIC_GETTER) | ||
25 | static val LogicTypeDescriptor_Instance = new TypeDescriptor(true,false,null) | ||
26 | @Accessors(PUBLIC_GETTER) | ||
27 | static val NumericTypeDescriptor_Instance = new TypeDescriptor(false,true,null) | ||
28 | |||
29 | private new(boolean logic, boolean numeric, SMTType complexType) { | ||
30 | this.logic = logic | ||
31 | this.numeric = numeric | ||
32 | this.complexType = complexType | ||
33 | } | ||
34 | public new(SMTType complexType) { | ||
35 | this.logic = false | ||
36 | this.numeric = false | ||
37 | this.complexType = complexType | ||
38 | } | ||
39 | |||
40 | def static dispatch createFromTypeReference(SMTBoolTypeReference ref) { return TypeDescriptor::LogicTypeDescriptor_Instance} | ||
41 | def static dispatch createFromTypeReference(SMTIntTypeReference ref) { return TypeDescriptor::NumericTypeDescriptor_Instance} | ||
42 | def static dispatch createFromTypeReference(SMTRealTypeReference ref) { return TypeDescriptor::NumericTypeDescriptor_Instance} | ||
43 | def static dispatch createFromTypeReference(SMTComplexTypeReference ref) { return new TypeDescriptor(false,false,ref.referred)} | ||
44 | } \ No newline at end of file | ||