aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/SingleSuccessorBlockImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/SingleSuccessorBlockImpl.java')
-rw-r--r--third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/SingleSuccessorBlockImpl.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/SingleSuccessorBlockImpl.java b/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/SingleSuccessorBlockImpl.java
new file mode 100644
index 0000000000..7e5988e2e7
--- /dev/null
+++ b/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/SingleSuccessorBlockImpl.java
@@ -0,0 +1,49 @@
+package org.checkerframework.dataflow.cfg.block;
+
+/*>>>
+import org.checkerframework.checker.nullness.qual.Nullable;
+*/
+
+import org.checkerframework.dataflow.analysis.Store;
+
+/**
+ * Implementation of a non-special basic block.
+ *
+ * @author Stefan Heule
+ *
+ */
+public abstract class SingleSuccessorBlockImpl extends BlockImpl implements
+ SingleSuccessorBlock {
+
+ /** Internal representation of the successor. */
+ protected /*@Nullable*/ BlockImpl successor;
+
+ /**
+ * The rule below say that EACH store at the end of a single
+ * successor block flow to the corresponding store of the successor.
+ */
+ protected Store.FlowRule flowRule = Store.FlowRule.EACH_TO_EACH;
+
+ @Override
+ public /*@Nullable*/ Block getSuccessor() {
+ return successor;
+ }
+
+ /**
+ * Set a basic block as the successor of this block.
+ */
+ public void setSuccessor(BlockImpl successor) {
+ this.successor = successor;
+ successor.addPredecessor(this);
+ }
+
+ @Override
+ public Store.FlowRule getFlowRule() {
+ return flowRule;
+ }
+
+ @Override
+ public void setFlowRule(Store.FlowRule rule) {
+ flowRule = rule;
+ }
+}