aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/ConditionalBlock.java
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/ConditionalBlock.java')
-rw-r--r--third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/ConditionalBlock.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/ConditionalBlock.java b/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/ConditionalBlock.java
new file mode 100644
index 0000000000..2f1621ef2f
--- /dev/null
+++ b/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/block/ConditionalBlock.java
@@ -0,0 +1,48 @@
+package org.checkerframework.dataflow.cfg.block;
+
+import org.checkerframework.dataflow.analysis.Store;
+import org.checkerframework.dataflow.cfg.node.Node;
+
+/**
+ * Represents a conditional basic block that contains exactly one boolean
+ * {@link Node}.
+ *
+ * @author Stefan Heule
+ *
+ */
+public interface ConditionalBlock extends Block {
+
+ /**
+ * @return the entry block of the then branch
+ */
+ Block getThenSuccessor();
+
+ /**
+ * @return the entry block of the else branch
+ */
+ Block getElseSuccessor();
+
+ /**
+ * @return the flow rule for information flowing from
+ * this block to its then successor
+ */
+ Store.FlowRule getThenFlowRule();
+
+ /**
+ * @return the flow rule for information flowing from
+ * this block to its else successor
+ */
+ Store.FlowRule getElseFlowRule();
+
+ /**
+ * Set the flow rule for information flowing from this block to
+ * its then successor.
+ */
+ void setThenFlowRule(Store.FlowRule rule);
+
+ /**
+ * Set the flow rule for information flowing from this block to
+ * its else successor.
+ */
+ void setElseFlowRule(Store.FlowRule rule);
+}