Beispiel #1
0
 public MeetOverPaths(ControlFlowGraph controlFlowGraph,
                      ITransmissionFunction <TacNode> transmissionFunction,
                      ICollectionOperator <TacNode> collectionOperator,
                      HashSet <TacNode> initSet,
                      bool isForwardDirection = true
                      )
 {
     TransmissionFunction = transmissionFunction;
     ControlFlowGraph     = controlFlowGraph;
     CollectionOperator   = collectionOperator;
     IsForwardDirection   = isForwardDirection;
     InitSet = initSet;
     InOut   = new InOutContainer <TacNode>();
 }
Beispiel #2
0
        //protected abstract HashSet<TacNode> CollectionOperator(HashSet<TacNode> x, HashSet<TacNode> y);

        protected IterationAlgorithm(
            ControlFlowGraph cfg,
            ITransmissionFunction <T> func,
            ICollectionOperator <T> collectionOperator,
            bool forwardDirection = true)
        {
            controlFlowGraph   = cfg;
            TransmissionFunc   = func.Calculate;
            CollectionOperator = collectionOperator.Collect;
            isForwardDirection = forwardDirection;
            if (forwardDirection)
            {
                GetPredVertices = x => controlFlowGraph.InEdges(x).Select(e => e.Source);
            }
            else
            {
                GetPredVertices = x => controlFlowGraph.OutEdges(x).Select(e => e.Target);
            }
        }