blob: 7e5988e2e7f04af599e36e493a2206bebe3ae2cd [file] [log] [blame]
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;
}
}