blob: 9e8872e850e5f6f9c8fee93480f87d4b42456e97 [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;
}
}