From 7e1f729fdae499e63f9bcd8c25bc69e2f72d0fc6 Mon Sep 17 00:00:00 2001 From: Andreas Bayha <bayha@fortiss.org> Date: Tue, 25 Apr 2023 17:23:49 +0200 Subject: [PATCH] Variability: Refactored constraints for product-line analysis Added a base class and several refactorings to pl constraints. Issue-ref: 4240 Issue-URL: af3#4240 Signed-off-by: Andreas Bayha <bayha@fortiss.org> --- .../analysis/ProductLineBaseAnalysis.java | 8 ++++---- .../analysis/ProductLineBaseTranslation.java | 15 ++++++++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseAnalysis.java b/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseAnalysis.java index ef9785f44..3ccf3d52f 100644 --- a/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseAnalysis.java +++ b/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseAnalysis.java @@ -54,7 +54,7 @@ public class ProductLineBaseAnalysis { this.model = model; this.translation = translation; - ctx = translation.ctx; + ctx = translation.getContext(); } /** @@ -162,7 +162,7 @@ public class ProductLineBaseAnalysis { } } - translation.ctx.close(); + translation.getContext().close(); return ret; } @@ -177,7 +177,7 @@ public class ProductLineBaseAnalysis { if(rawConstraints.size() > 0) { solver.add(rawConstraints.toArray(new BoolExpr[rawConstraints.size()])); - solver.add(translation.ctx + solver.add(translation.getContext() .mkOr(constraintTrackers.toArray(new BoolExpr[constraintTrackers.size()]))); } return solver; @@ -196,7 +196,7 @@ public class ProductLineBaseAnalysis { for(IProductLineConstraint constraint : plConstraints) { Expr[] quantifierValiables = constraint.getQuantifierVariables(); EClass[] variableClasses = constraint.getVariablesClasses(); - BoolExpr[] containmentExprs = constraint.getContainmentExpr(); + BoolExpr[] containmentExprs = new BoolExpr[0]; BoolExpr body = constraint.getBody(); boolean isForAll = constraint.isForAll(); diff --git a/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseTranslation.java b/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseTranslation.java index 56476d967..162c1fa17 100644 --- a/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseTranslation.java +++ b/org.fortiss.variability/src/org/fortiss/variability/analysis/ProductLineBaseTranslation.java @@ -189,12 +189,12 @@ public class ProductLineBaseTranslation { for(EClass sprCls : superTypes) { if(!sprCls.equals(EcorePackage.Literals.EOBJECT)) { - allObjects.append(sprCls, model); - allSubclasses.append(sprCls, eClass); + allObjects.add(sprCls, model); + allSubclasses.add(sprCls, eClass); } } - allObjects.append(eClass, model); + allObjects.add(eClass, model); for(EObject c : model.eContents()) { collectClassesAndObjectsRecrsively(c); @@ -607,7 +607,7 @@ public class ProductLineBaseTranslation { FuncDecl funDecl = ctx.mkFuncDecl(funId, eClass2Datatype.get(ec), rangeSort); eAttribute2FunDecl.put(ea, ec, funDecl); - translatedAttributes.append(ec, ea); + translatedAttributes.add(ec, ea); attRefNames2FuncDecl.put(ec, ea.getName(), funDecl); } for(EReference er : ec.getEAllReferences()) { @@ -642,7 +642,7 @@ public class ProductLineBaseTranslation { eReference2Sort.put(er, refSort); eReference2FunDecl.put(er, ec, funDecl); - translatedReferences.append(ec, er); + translatedReferences.add(ec, er); attRefNames2FuncDecl.put(ec, er.getName(), funDecl); } } @@ -788,4 +788,9 @@ public class ProductLineBaseTranslation { public void addExcludedClasses(Collection<EClass> clss) { this.excludedClasses.addAll(clss); } + + /** Returns ctx. */ + public Context getContext() { + return ctx; + } } -- GitLab