aboutsummaryrefslogtreecommitdiffstats
path: root/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-09-14 16:37:19 +0200
committerLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-09-14 16:37:19 +0200
commit303b2728867cda25da1a20f520943ef86f6d5922 (patch)
tree522ee4cfa7f5d58d1f4ff90598b02d1582b6a11f /Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
parentAdded support for SHORT type as integer (diff)
downloadVIATRA-Generator-303b2728867cda25da1a20f520943ef86f6d5922.tar.gz
VIATRA-Generator-303b2728867cda25da1a20f520943ef86f6d5922.tar.zst
VIATRA-Generator-303b2728867cda25da1a20f520943ef86f6d5922.zip
updated support for java types
Diffstat (limited to 'Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend')
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend27
1 files changed, 27 insertions, 0 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
index 3d2c46a5..3e8b3366 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
@@ -29,6 +29,7 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.Positi
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint 29import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint
30 30
31import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 31import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint
32 33
33class Constraint2Logic { 34class Constraint2Logic {
34 val extension LogicProblemBuilder builder = new LogicProblemBuilder 35 val extension LogicProblemBuilder builder = new LogicProblemBuilder
@@ -209,6 +210,7 @@ class Constraint2Logic {
209 return transformPathConstraint(type,src,trg,ecore2LogicTrace,variable2Variable,viatra2LogicTrace) 210 return transformPathConstraint(type,src,trg,ecore2LogicTrace,variable2Variable,viatra2LogicTrace)
210 } else throw new IllegalArgumentException('''unknown tuple: «tuple»''') 211 } else throw new IllegalArgumentException('''unknown tuple: «tuple»''')
211 } 212 }
213
212 def Term transformTypeConstraint( 214 def Term transformTypeConstraint(
213 EClass type, 215 EClass type,
214 PVariable variable, 216 PVariable variable,
@@ -242,6 +244,31 @@ class Constraint2Logic {
242 } 244 }
243 } 245 }
244 246
247 def dispatch Term transformConstraint(TypeFilterConstraint constraint,
248 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
249 Viatra2LogicTrace viatra2LogicTrace,
250 Map<PVariable, Variable> variable2Variable,
251 Viatra2LogicConfiguration config)
252 {
253 val tuple = constraint.variablesTuple
254 if(tuple.size == 1) {
255 val typeConstraint = constraint.equivalentJudgement.inputKey
256 if(typeConstraint instanceof EClassTransitiveInstancesKey) {
257 val type = typeConstraint.emfKey
258 val variable = tuple.get(0) as PVariable
259 return transformTypeConstraint(type,variable,ecore2LogicTrace,variable2Variable,viatra2LogicTrace)
260 } else if(typeConstraint instanceof EDataTypeInSlotsKey) {
261 // If the type is a primitive type or EEnum, then instanceof is an unnecessary constraint
262 return null
263 }
264 } else if(tuple.size == 2) {
265 val type = (constraint.equivalentJudgement.inputKey as EStructuralFeatureInstancesKey).emfKey
266 val src = tuple.get(0) as PVariable
267 val trg = tuple.get(1) as PVariable
268 return transformPathConstraint(type,src,trg,ecore2LogicTrace,variable2Variable,viatra2LogicTrace)
269 } else throw new IllegalArgumentException('''unknown tuple: «tuple»''')
270 }
271
245 def dispatch Term transformConstraint(PConstraint constraint, 272 def dispatch Term transformConstraint(PConstraint constraint,
246 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, 273 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
247 Viatra2LogicTrace viatra2LogicTrace, 274 Viatra2LogicTrace viatra2LogicTrace,