public class ArgReduceOperator<CfaNodeT extends CfaNode<CfaEdgeT,SignatureT>,CfaEdgeT extends CfaEdge<CfaNodeT>,SignatureT extends Signature> extends java.lang.Object implements ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT>
ReduceOperator delegates reduction to its inner reduce operator and
creates an ARG node to its output.| Modifier and Type | Field and Description |
|---|---|
protected ArgAbstractStateFactory |
argAbstractStateFactory |
protected ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> |
wrappedReduceOperator |
| Constructor and Description |
|---|
ArgReduceOperator(ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> wrappedReduceOperator,
ArgAbstractStateFactory argAbstractStateFactory)
Create a wrapper reduce operator.
|
| Modifier and Type | Method and Description |
|---|---|
ArgAbstractState |
reduce(AbstractState expandedInitialState,
CfaNodeT blockEntryNode,
Call call)
Creates the initial state of the called procedure discarding the useless information from the state of the caller.
|
protected final ReduceOperator<CfaNodeT extends CfaNode<CfaEdgeT,SignatureT>,CfaEdgeT extends CfaEdge<CfaNodeT>,SignatureT extends Signature> wrappedReduceOperator
protected final ArgAbstractStateFactory argAbstractStateFactory
public ArgReduceOperator(ReduceOperator<CfaNodeT,CfaEdgeT,SignatureT> wrappedReduceOperator, ArgAbstractStateFactory argAbstractStateFactory)
wrappedReduceOperator - a reduce operator to be wrappedargAbstractStateFactory - an abstract state factory to wrap the operator resultpublic ArgAbstractState reduce(AbstractState expandedInitialState, CfaNodeT blockEntryNode, Call call)
ReduceOperatorreduce in interface ReduceOperator<CfaNodeT extends CfaNode<CfaEdgeT,SignatureT>,CfaEdgeT extends CfaEdge<CfaNodeT>,SignatureT extends Signature>expandedInitialState - the entry state of the called procedure before any reductionblockEntryNode - the entry node of the called procedurecall - the information of the call to the procedure