Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2018-08-06 13:48:47 +0000
committerEd Willink2018-09-04 12:19:55 +0000
commitcf57c3ff988a6f1b9b585fabe07540325a78dd32 (patch)
treeb026a7fe3901832aad3d49afa5e7f00c7e2cad7f
parent622ae0f92f6c63078f59aa9e838273af5d8f61af (diff)
downloadorg.eclipse.qvtd-cf57c3ff988a6f1b9b585fabe07540325a78dd32.tar.gz
org.eclipse.qvtd-cf57c3ff988a6f1b9b585fabe07540325a78dd32.tar.xz
org.eclipse.qvtd-cf57c3ff988a6f1b9b585fabe07540325a78dd32.zip
[529130] Abstract PartialRegionAnalysis
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/PartialRegionAnalysis.java35
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/RegionAnalysis.java22
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleAnalysis.java28
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleRegionAnalysis.java27
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CyclesAnalysis.java47
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceClassAnalysis.java4
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceElementAnalysis.java4
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TracePropertyAnalysis.java17
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TransformationPartitioner.java4
9 files changed, 116 insertions, 72 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/PartialRegionAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/PartialRegionAnalysis.java
new file mode 100644
index 000000000..4f6010343
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/PartialRegionAnalysis.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.qvtd.compiler.internal.qvts2qvts;
+
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.pivot.utilities.Nameable;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.partitioner.TraceClassAnalysis;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.partitioner.TracePropertyAnalysis;
+import org.eclipse.qvtd.pivot.qvtschedule.ClassDatum;
+import org.eclipse.qvtd.pivot.qvtschedule.Node;
+import org.eclipse.qvtd.pivot.qvtschedule.PropertyDatum;
+
+public interface PartialRegionAnalysis<RA extends PartialRegionAnalysis<@NonNull RA>> extends Nameable
+{
+ @Nullable Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> getConsumedTraceClassAnalyses();
+ @Nullable Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> getConsumedTracePropertyAnalyses();
+ @Nullable Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> getProducedTraceClassAnalyses();
+ @Nullable Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> getProducedTracePropertyAnalyses();
+ @Nullable Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> getSuperProducedTraceClassAnalyses();
+ @Nullable Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> getSuperProducedTracePropertyAnalyses();
+ @NonNull TraceClassAnalysis<@NonNull RA> getTraceClassAnalysis(@NonNull ClassDatum traceClassDatum);
+ @NonNull TracePropertyAnalysis<@NonNull RA> getTracePropertyAnalysis(@NonNull PropertyDatum propertyDatum);
+ @NonNull List<@NonNull Node> getTraceNodes();
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/RegionAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/RegionAnalysis.java
index 4a3195c88..165cbaa2f 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/RegionAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/RegionAnalysis.java
@@ -21,7 +21,6 @@ import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.CompleteClass;
import org.eclipse.ocl.pivot.Property;
-import org.eclipse.ocl.pivot.utilities.Nameable;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.RegionHelper;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.ScheduleManager;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.TransformationAnalysis;
@@ -43,7 +42,7 @@ import org.eclipse.qvtd.pivot.qvtschedule.utilities.QVTscheduleUtil;
import com.google.common.collect.Iterables;
-public class RegionAnalysis extends RegionHelper<@NonNull Region>implements Nameable
+public class RegionAnalysis extends RegionHelper<@NonNull Region> implements PartialRegionAnalysis<@NonNull RegionAnalysis>
{
protected final @NonNull TransformationAnalysis transformationAnalysis;
// protected final @NonNull ScheduleManager scheduleManager;
@@ -743,10 +742,12 @@ public class RegionAnalysis extends RegionHelper<@NonNull Region>implements Name
return constantOutputNodes;
}
+ @Override
public @Nullable Iterable<@NonNull TraceClassAnalysis<@NonNull RegionAnalysis>> getConsumedTraceClassAnalyses() {
return consumedTraceClassAnalyses;
}
+ @Override
public @Nullable Iterable<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> getConsumedTracePropertyAnalyses() {
return consumedTracePropertyAnalyses;
}
@@ -798,10 +799,12 @@ public class RegionAnalysis extends RegionHelper<@NonNull Region>implements Name
return predicatedOutputNodes;
}
+ @Override
public @Nullable Iterable<@NonNull TraceClassAnalysis<@NonNull RegionAnalysis>> getProducedTraceClassAnalyses() {
return producedTraceClassAnalyses;
}
+ @Override
public @Nullable Iterable<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> getProducedTracePropertyAnalyses() {
return producedTracePropertyAnalyses;
}
@@ -845,6 +848,7 @@ public class RegionAnalysis extends RegionHelper<@NonNull Region>implements Name
return successEdge != null ? successEdge.getTargetNode() : null;
}
+ @Override
public @Nullable Iterable<@NonNull TraceClassAnalysis<@NonNull RegionAnalysis>> getSuperProducedTraceClassAnalyses() {
List<@NonNull TraceClassAnalysis<@NonNull RegionAnalysis>> producedTraceClassAnalyses2 = producedTraceClassAnalyses;
if (producedTraceClassAnalyses2 != null) {
@@ -859,6 +863,7 @@ public class RegionAnalysis extends RegionHelper<@NonNull Region>implements Name
return superProducedTraceClassAnalyses;
}
+ @Override
public @Nullable Iterable<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> getSuperProducedTracePropertyAnalyses() {
List<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> producedTracePropertyAnalyses2 = producedTracePropertyAnalyses;
if (producedTracePropertyAnalyses2 != null) {
@@ -867,16 +872,27 @@ public class RegionAnalysis extends RegionHelper<@NonNull Region>implements Name
superProducedTracePropertyAnalyses2 = superProducedTracePropertyAnalyses = new HashSet<>();
}
for (@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis> producedTracePropertyAnalysis : producedTracePropertyAnalyses2) {
- Iterables.addAll(superProducedTracePropertyAnalyses2, producedTracePropertyAnalysis.getSuperTracePropertyAnalyses());
+ Iterables.addAll(superProducedTracePropertyAnalyses2, producedTracePropertyAnalysis.getSuperTracePropertyAnalyses(this));
}
}
return superProducedTracePropertyAnalyses;
}
+ @Override
+ public @NonNull TraceClassAnalysis<@NonNull RegionAnalysis> getTraceClassAnalysis(@NonNull ClassDatum traceClassDatum) {
+ return transformationAnalysis.getTraceClassAnalysis(traceClassDatum);
+ }
+
+ @Override
+ public @NonNull TracePropertyAnalysis<@NonNull RegionAnalysis> getTracePropertyAnalysis(@NonNull PropertyDatum propertyDatum) {
+ return transformationAnalysis.getTracePropertyAnalysis(propertyDatum);
+ }
+
public @Nullable Edge getTraceEdge(@NonNull Node node) {
return node2traceEdge.get(node);
}
+ @Override
public @NonNull List<@NonNull Node> getTraceNodes() {
return traceNodes;
}
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleAnalysis.java
index 2e4738947..473e89751 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleAnalysis.java
@@ -10,21 +10,15 @@
*******************************************************************************/
package org.eclipse.qvtd.compiler.internal.qvts2qvts.partitioner;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
-import org.eclipse.qvtd.pivot.qvtschedule.MappingRegion;
-import org.eclipse.qvtd.pivot.qvtschedule.ScheduledRegion;
-
-import com.google.common.collect.Iterables;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.PartialRegionAnalysis;
/**
* Each CycleAnalysis identifies one group of regionAnalyses that contribute to a cycle.
*/
-public abstract class CycleAnalysis<RA extends RegionAnalysis>
+public abstract class CycleAnalysis<RA extends PartialRegionAnalysis<@NonNull RA>>
{
protected final @NonNull CyclesAnalysis<@NonNull RA> cyclesAnalysis;
protected final @NonNull Set<@NonNull RA> regionAnalyses;
@@ -52,22 +46,4 @@ public abstract class CycleAnalysis<RA extends RegionAnalysis>
public @NonNull Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> getTracePropertyAnalyses() {
return tracePropertyAnalyses;
}
-
- public @NonNull Iterable<@NonNull Partition> partition(@NonNull Iterable<@NonNull MappingPartitioner> orderedMappingPartitioners) {
- List<@NonNull Partition> partitions = new ArrayList<>();
- for (@NonNull MappingPartitioner mappingPartitioner : orderedMappingPartitioners) {
- RegionAnalysis regionAnalysis = mappingPartitioner.getRegionAnalysis();
- if (regionAnalyses.contains(regionAnalysis)) {
- MappingRegion oldRegion = mappingPartitioner.getRegion();
- ScheduledRegion scheduledRegion = oldRegion.getScheduledRegion();
- Iterable<@NonNull Partition> newPartitions = mappingPartitioner.partition();
- // oldRegion.setScheduledRegion(null);
- // for (@NonNull MappingRegion newRegion : newRegions) {
- // newRegion.setScheduledRegion(scheduledRegion);
- // }
- Iterables.addAll(partitions, newPartitions);
- }
- }
- return partitions;
- }
}
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleRegionAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleRegionAnalysis.java
index 90d825fe8..9207609f3 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleRegionAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CycleRegionAnalysis.java
@@ -10,18 +10,23 @@
*******************************************************************************/
package org.eclipse.qvtd.compiler.internal.qvts2qvts.partitioner;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
+import org.eclipse.qvtd.pivot.qvtschedule.MappingRegion;
+import org.eclipse.qvtd.pivot.qvtschedule.ScheduledRegion;
+
+import com.google.common.collect.Iterables;
/**
* Each CycleAnalysis identifies one group of regionAnalyses that contribute to a cycle.
*/
public class CycleRegionAnalysis extends CycleAnalysis<@NonNull RegionAnalysis>
{
- private @Nullable Boolean isInfallible = null;
+ // private @Nullable Boolean isInfallible = null;
public CycleRegionAnalysis(@NonNull CyclesAnalysis<@NonNull RegionAnalysis> cyclesAnalysis, @NonNull Set<@NonNull RegionAnalysis> regionAnalyses,
@NonNull Set<@NonNull TraceClassAnalysis<@NonNull RegionAnalysis>> traceClassAnalyses, @NonNull Set<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> tracePropertyAnalyses) {
@@ -46,4 +51,22 @@ public class CycleRegionAnalysis extends CycleAnalysis<@NonNull RegionAnalysis>
}
return isInfallible2;
} */
+
+ public @NonNull Iterable<@NonNull Partition> partition(@NonNull Iterable<@NonNull MappingPartitioner> orderedMappingPartitioners) {
+ List<@NonNull Partition> partitions = new ArrayList<>();
+ for (@NonNull MappingPartitioner mappingPartitioner : orderedMappingPartitioners) {
+ RegionAnalysis regionAnalysis = mappingPartitioner.getRegionAnalysis();
+ if (regionAnalyses.contains(regionAnalysis)) {
+ MappingRegion oldRegion = mappingPartitioner.getRegion();
+ ScheduledRegion scheduledRegion = oldRegion.getScheduledRegion();
+ Iterable<@NonNull Partition> newPartitions = mappingPartitioner.partition();
+ // oldRegion.setScheduledRegion(null);
+ // for (@NonNull MappingRegion newRegion : newRegions) {
+ // newRegion.setScheduledRegion(scheduledRegion);
+ // }
+ Iterables.addAll(partitions, newPartitions);
+ }
+ }
+ return partitions;
+ }
}
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CyclesAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CyclesAnalysis.java
index c6bc9ca11..306f5b8bc 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CyclesAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/CyclesAnalysis.java
@@ -22,7 +22,7 @@ import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.TransformationAnalysis;
-import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.PartialRegionAnalysis;
import org.eclipse.qvtd.compiler.internal.utilities.CompilerUtil;
import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil;
@@ -32,7 +32,7 @@ import com.google.common.collect.Lists;
/**
* The CyclesAnalysis identifies a CycleAnalysis for each group of regionAnalyses that contribute to a cycle.
*/
-public abstract class CyclesAnalysis<RA extends RegionAnalysis>
+public abstract class CyclesAnalysis<RA extends PartialRegionAnalysis<@NonNull RA>>
{
protected final @NonNull TransformationAnalysis transformationAnalysis;
protected final @NonNull Iterable<@NonNull RA> regionAnalyses;
@@ -124,8 +124,7 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
consumer2producers.put(regionAnalysis, new HashSet<>());
}
for (@NonNull RA consumer : regionAnalyses) {
- @SuppressWarnings("unchecked")
- Iterable<@NonNull ? extends TraceClassAnalysis<@NonNull RA>> consumedTraceClassAnalyses = (Iterable<@NonNull ? extends TraceClassAnalysis<@NonNull RA>>)(Object)consumer.getConsumedTraceClassAnalyses();
+ Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> consumedTraceClassAnalyses = consumer.getConsumedTraceClassAnalyses();
if (consumedTraceClassAnalyses != null) {
for (@NonNull TraceClassAnalysis<@NonNull RA> consumedTraceClassAnalysis : consumedTraceClassAnalyses) {
for (@NonNull TraceClassAnalysis<@NonNull RA> subConsumedTraceClass : consumedTraceClassAnalysis.getSubTraceClassAnalyses()) {
@@ -137,8 +136,7 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
}
}
}
- @SuppressWarnings("unchecked")
- Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> consumedTracePropertyAnalyses = (Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>>)(Object)consumer.getConsumedTracePropertyAnalyses();
+ Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> consumedTracePropertyAnalyses = consumer.getConsumedTracePropertyAnalyses();
if (consumedTracePropertyAnalyses != null) {
for (@NonNull TracePropertyAnalysis<@NonNull RA> consumedTracePropertyAnalysis : consumedTracePropertyAnalyses) {
for (@NonNull RA producer : consumedTracePropertyAnalysis.getProducers()) {
@@ -186,8 +184,7 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
producer2consumers.put(regionAnalysis, new HashSet<>());
}
for (@NonNull RA producer : regionAnalyses) {
- @SuppressWarnings("unchecked")
- Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> producedTraceClassAnalyses = (Iterable<@NonNull TraceClassAnalysis<@NonNull RA>>)(Object)producer.getProducedTraceClassAnalyses();
+ Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> producedTraceClassAnalyses = producer.getProducedTraceClassAnalyses();
if (producedTraceClassAnalyses != null) {
for (@NonNull TraceClassAnalysis<@NonNull RA> producedTraceClassAnalysis : producedTraceClassAnalyses) {
for (@NonNull TraceClassAnalysis<@NonNull RA> superProducedTraceClassAnalysis : producedTraceClassAnalysis.getSuperTraceClassAnalyses()) {
@@ -199,8 +196,7 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
}
}
}
- @SuppressWarnings("unchecked")
- Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> producedTracePropertyAnalyses = (Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>>)(Object)producer.getProducedTracePropertyAnalyses();
+ Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> producedTracePropertyAnalyses = producer.getProducedTracePropertyAnalyses();
if (producedTracePropertyAnalyses != null) {
for (@NonNull TracePropertyAnalysis<@NonNull RA> producedTracePropertyAnalysis : producedTracePropertyAnalyses) {
for (@NonNull RA consumer : producedTracePropertyAnalysis.getConsumers()) {
@@ -225,12 +221,12 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
}
Map<@NonNull RA, @NonNull Set<@NonNull RA>> producer2consumersClosure = CompilerUtil.computeClosure(producer2consumers);
if (TransformationPartitioner.SUCCESSORS.isActive()) {
- for (@NonNull RegionAnalysis predecessor : regionAnalyses) {
+ for (@NonNull RA predecessor : regionAnalyses) {
StringBuilder s = new StringBuilder();
s.append(predecessor + ":");
- List<@NonNull RegionAnalysis> consumers = new ArrayList<>(producer2consumersClosure.get(predecessor));
+ List<@NonNull RA> consumers = new ArrayList<>(producer2consumersClosure.get(predecessor));
Collections.sort(consumers, NameUtil.NAMEABLE_COMPARATOR);
- for (@NonNull RegionAnalysis consumer : consumers) {
+ for (@NonNull RA consumer : consumers) {
s.append(" " + consumer);
}
TransformationPartitioner.SUCCESSORS.println(s.toString());
@@ -258,27 +254,27 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
Collections.sort(regionAnalyses2, NameUtil.NAMEABLE_COMPARATOR);
for (@NonNull RA regionAnalysis : regionAnalyses2) {
s.append("\n\t" + regionAnalysis);
- Iterable<@NonNull ? extends TraceClassAnalysis<@NonNull RegionAnalysis>> consumedTraceClassAnalyses = regionAnalysis.getConsumedTraceClassAnalyses();
+ Iterable<@NonNull ? extends TraceClassAnalysis<@NonNull RA>> consumedTraceClassAnalyses = regionAnalysis.getConsumedTraceClassAnalyses();
if (consumedTraceClassAnalyses != null) {
- for (@NonNull TraceClassAnalysis<@NonNull RegionAnalysis> traceClassAnalysis : consumedTraceClassAnalyses) {
+ for (@NonNull TraceClassAnalysis<@NonNull RA> traceClassAnalysis : consumedTraceClassAnalyses) {
s.append("\n\t =>" + traceClassAnalysis);
}
}
- Iterable<@NonNull ? extends TraceClassAnalysis<@NonNull RegionAnalysis>> producedTraceClassAnalyses = regionAnalysis.getProducedTraceClassAnalyses();
+ Iterable<@NonNull ? extends TraceClassAnalysis<@NonNull RA>> producedTraceClassAnalyses = regionAnalysis.getProducedTraceClassAnalyses();
if (producedTraceClassAnalyses != null) {
- for (@NonNull TraceClassAnalysis<@NonNull RegionAnalysis> traceClassAnalysis : producedTraceClassAnalyses) {
+ for (@NonNull TraceClassAnalysis<@NonNull RA> traceClassAnalysis : producedTraceClassAnalyses) {
s.append("\n\t <=" + traceClassAnalysis);
}
}
- Iterable<@NonNull ? extends TracePropertyAnalysis<@NonNull RegionAnalysis>> consumedTracePropertyAnalyses = regionAnalysis.getConsumedTracePropertyAnalyses();
+ Iterable<@NonNull ? extends TracePropertyAnalysis<@NonNull RA>> consumedTracePropertyAnalyses = regionAnalysis.getConsumedTracePropertyAnalyses();
if (consumedTracePropertyAnalyses != null) {
- for (@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis> tracePropertyAnalysis : consumedTracePropertyAnalyses) {
+ for (@NonNull TracePropertyAnalysis<@NonNull RA> tracePropertyAnalysis : consumedTracePropertyAnalyses) {
s.append("\n\t =>" + tracePropertyAnalysis);
}
}
- Iterable<@NonNull ? extends TracePropertyAnalysis<@NonNull RegionAnalysis>> producedTracePropertyAnalyses = regionAnalysis.getProducedTracePropertyAnalyses();
+ Iterable<@NonNull ? extends TracePropertyAnalysis<@NonNull RA>> producedTracePropertyAnalyses = regionAnalysis.getProducedTracePropertyAnalyses();
if (producedTracePropertyAnalyses != null) {
- for (@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis> tracePropertyAnalysis : producedTracePropertyAnalyses) {
+ for (@NonNull TracePropertyAnalysis<@NonNull RA> tracePropertyAnalysis : producedTracePropertyAnalyses) {
s.append("\n\t <=" + tracePropertyAnalysis);
}
}
@@ -306,18 +302,15 @@ public abstract class CyclesAnalysis<RA extends RegionAnalysis>
Set<@NonNull TraceClassAnalysis<@NonNull RA>> superProducedTraceClassAnalyses = new HashSet<>();
Set<@NonNull TracePropertyAnalysis<@NonNull RA>> consumedTracePropertyAnalyses = new HashSet<>();
for (@NonNull RA cyclicRegionAnalysis : cyclicRegionAnalyses) {
- @SuppressWarnings("unchecked")
- Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> consumedTraceClassAnalyses2 = (Iterable<@NonNull TraceClassAnalysis<@NonNull RA>>)(Object)cyclicRegionAnalysis.getConsumedTraceClassAnalyses();
+ Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> consumedTraceClassAnalyses2 = cyclicRegionAnalysis.getConsumedTraceClassAnalyses();
if (consumedTraceClassAnalyses2 != null) {
Iterables.addAll(consumedTraceClassAnalyses, consumedTraceClassAnalyses2);
}
- @SuppressWarnings("unchecked")
- Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> superProducedTraceClassAnalyses2 = (Iterable<@NonNull TraceClassAnalysis<@NonNull RA>>)(Object)cyclicRegionAnalysis.getSuperProducedTraceClassAnalyses();
+ Iterable<@NonNull TraceClassAnalysis<@NonNull RA>> superProducedTraceClassAnalyses2 = cyclicRegionAnalysis.getSuperProducedTraceClassAnalyses();
if (superProducedTraceClassAnalyses2 != null) {
Iterables.addAll(superProducedTraceClassAnalyses, superProducedTraceClassAnalyses2);
}
- @SuppressWarnings("unchecked")
- Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> consumedTracePropertyAnalyses2 = (Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>>)(Object)cyclicRegionAnalysis.getConsumedTracePropertyAnalyses();
+ Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> consumedTracePropertyAnalyses2 = cyclicRegionAnalysis.getConsumedTracePropertyAnalyses();
if (consumedTracePropertyAnalyses2 != null) {
Iterables.addAll(consumedTracePropertyAnalyses, consumedTracePropertyAnalyses2);
}
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceClassAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceClassAnalysis.java
index b7c03ba11..80f22ac43 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceClassAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceClassAnalysis.java
@@ -25,7 +25,7 @@ import org.eclipse.ocl.pivot.Property;
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.qvtd.compiler.CompilerChainException;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.TransformationAnalysis;
-import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.PartialRegionAnalysis;
import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil;
import org.eclipse.qvtd.pivot.qvtschedule.ClassDatum;
import org.eclipse.qvtd.pivot.qvtschedule.NavigableEdge;
@@ -37,7 +37,7 @@ import org.eclipse.qvtd.runtime.evaluation.AbstractDispatch;
/**
* Each TraceClassAnalysis identifies the usage of one middle trace class.
*/
-public abstract class TraceClassAnalysis<RA extends RegionAnalysis> extends TraceElementAnalysis<RA>
+public abstract class TraceClassAnalysis<RA extends PartialRegionAnalysis<@NonNull RA>> extends TraceElementAnalysis<RA>
{
protected final @NonNull ClassDatum traceClassDatum;
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceElementAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceElementAnalysis.java
index e27653e54..568528fc5 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceElementAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TraceElementAnalysis.java
@@ -16,12 +16,12 @@ import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.pivot.utilities.Nameable;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.TransformationAnalysis;
-import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.PartialRegionAnalysis;
/**
* Each TraceClassAnalysis identifies the usage of one middle trace class or property.
*/
-public abstract class TraceElementAnalysis<RA extends RegionAnalysis> implements Nameable
+public abstract class TraceElementAnalysis<RA extends PartialRegionAnalysis<@NonNull RA>> implements Nameable
{
protected final @NonNull TransformationAnalysis transformationAnalysis;
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TracePropertyAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TracePropertyAnalysis.java
index 3aead2831..b25d61c36 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TracePropertyAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TracePropertyAnalysis.java
@@ -17,7 +17,8 @@ import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.pivot.Property;
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.qvtd.compiler.internal.qvtb2qvts.TransformationAnalysis;
-import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
+import org.eclipse.qvtd.compiler.internal.qvts2qvts.PartialRegionAnalysis;
+//import org.eclipse.qvtd.compiler.internal.qvts2qvts.RegionAnalysis;
import org.eclipse.qvtd.pivot.qvtschedule.ClassDatum;
import org.eclipse.qvtd.pivot.qvtschedule.PropertyDatum;
import org.eclipse.qvtd.pivot.qvtschedule.utilities.QVTscheduleUtil;
@@ -25,11 +26,11 @@ import org.eclipse.qvtd.pivot.qvtschedule.utilities.QVTscheduleUtil;
/**
* Each TracePropertyAnalysis identifies the usage of one middle trace property.
*/
-public abstract class TracePropertyAnalysis<RA extends RegionAnalysis> extends TraceElementAnalysis<RA>
+public abstract class TracePropertyAnalysis<RA extends PartialRegionAnalysis<@NonNull RA>> extends TraceElementAnalysis<@NonNull RA>
{
protected final @NonNull PropertyDatum tracePropertyDatum;
- public TracePropertyAnalysis(@NonNull TransformationAnalysis transformationAnalysis, @NonNull PropertyDatum tracePropertyDatum) {
+ protected TracePropertyAnalysis(@NonNull TransformationAnalysis transformationAnalysis, @NonNull PropertyDatum tracePropertyDatum) {
super(transformationAnalysis);
this.tracePropertyDatum = tracePropertyDatum;
assert tracePropertyDatum.getReferredTypedModel() == transformationAnalysis.getScheduleManager().getTraceTypedModel();
@@ -40,15 +41,15 @@ public abstract class TracePropertyAnalysis<RA extends RegionAnalysis> extends T
return tracePropertyDatum.getName();
}
- public @NonNull Iterable<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> getSuperTracePropertyAnalyses() {
- List<@NonNull TracePropertyAnalysis<@NonNull RegionAnalysis>> tracePropertyAnalyses = new ArrayList<>();
+ public @NonNull Iterable<@NonNull TracePropertyAnalysis<@NonNull RA>> getSuperTracePropertyAnalyses(@NonNull RA regionAnalysis) {
+ List<@NonNull TracePropertyAnalysis<@NonNull RA>> tracePropertyAnalyses = new ArrayList<>();
ClassDatum traceClassDatum = QVTscheduleUtil.getOwningClassDatum(tracePropertyDatum);
- TraceClassAnalysis<@NonNull RegionAnalysis> traceClassAnalysis = transformationAnalysis.getTraceClassAnalysis(traceClassDatum);
- for (@NonNull TraceClassAnalysis<@NonNull RegionAnalysis> superTraceClassAnalysis : traceClassAnalysis.getSuperTraceClassAnalyses()) {
+ TraceClassAnalysis<@NonNull RA> traceClassAnalysis = regionAnalysis.getTraceClassAnalysis(traceClassDatum);
+ for (@NonNull TraceClassAnalysis<@NonNull RA> superTraceClassAnalysis : traceClassAnalysis.getSuperTraceClassAnalyses()) {
ClassDatum superTraceClassDatum = superTraceClassAnalysis.getClassDatum();
PropertyDatum propertyDatum = NameUtil.getNameable(superTraceClassDatum.getOwnedPropertyDatums(), getName());
if (propertyDatum != null) {
- TracePropertyAnalysis<@NonNull RegionAnalysis> tracePropertyAnalysis = transformationAnalysis.getTracePropertyAnalysis(propertyDatum);
+ TracePropertyAnalysis<@NonNull RA> tracePropertyAnalysis = regionAnalysis.getTracePropertyAnalysis(propertyDatum);
if (!tracePropertyAnalyses.contains(tracePropertyAnalysis)) {
tracePropertyAnalyses.add(tracePropertyAnalysis);
}
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TransformationPartitioner.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TransformationPartitioner.java
index 4b3e801a8..91f277678 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TransformationPartitioner.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/partitioner/TransformationPartitioner.java
@@ -212,9 +212,9 @@ public class TransformationPartitioner
// Perform per-mapping partitioning
//
List<@NonNull Partition> partitions = new ArrayList<>();
- Set<@NonNull CycleAnalysis<RegionAnalysis>> partitionedCycles = new HashSet<>();
+ Set<@NonNull CycleAnalysis<@NonNull RegionAnalysis>> partitionedCycles = new HashSet<>();
for (@NonNull MappingPartitioner mappingPartitioner : mappingPartitioners) {
- CycleAnalysis<RegionAnalysis> cycleAnalysis = transformationAnalysis.getCycleAnalysis(mappingPartitioner.getRegionAnalysis());
+ CycleRegionAnalysis cycleAnalysis = transformationAnalysis.getCycleAnalysis(mappingPartitioner.getRegionAnalysis());
if (Iterables.isEmpty(mappingPartitioner.getTraceNodes())) {
partitions.add(new NonPartition(mappingPartitioner));
}

Back to the top