Esempio n. 1
0
 internal void SelfRemove()
 {
     DataFlowForwardRelated.RemoveAllTwoWay();
     DataFlowBackRelated.RemoveAllTwoWay();
     foreach (var forwardRoute in ProgramFlowForwardRoutes)
     {
         forwardRoute.ProgramFlowBackRoutes.AddTwoWay(ProgramFlowBackRoutes);
     }
     //RemoveFromBranches();
     ProgramFlowBackRoutes.RemoveAllTwoWay();
     ProgramFlowForwardRoutes.RemoveAllTwoWay();
 }
Esempio n. 2
0
 internal virtual void SelfRemoveAndStitch()
 {
     foreach (var forwardInst in DataFlowForwardRelated.ToArray())
     {
         int index = forwardInst.ArgIndex;
         forwardInst.MirrorArg.ContainingList.AddTwoWay(DataFlowBackRelated.Select(x => x.Argument).ToList(), index);
         forwardInst.ContainingList.RemoveTwoWay(forwardInst);
     }
     foreach (var forwardPath in ProgramFlowForwardRoutes.ToArray())
     {
         forwardPath.ProgramFlowBackRoutes.AddTwoWay(ProgramFlowBackRoutes.ToList());
         ProgramFlowForwardRoutes.RemoveTwoWay(forwardPath);
     }
     RemoveFromBranches();
     DataFlowBackRelated.RemoveAllTwoWay();
     foreach (CoupledList related in new CoupledList[] { ProgramFlowBackRoutes, SingleUnitBackRelated, SingleUnitForwardRelated })
     {
         related.RemoveAllTwoWay();
     }
 }
Esempio n. 3
0
        public IEnumerable <InstructionNode> GetDataOriginNodes()
        {
            var justThis = new[] { this };

            if (DataFlowBackRelated.Count == 0)
            {
                return(justThis);
            }
            var thisAsDataTrasferingNode = this as IDataTransferingNode;

            if (thisAsDataTrasferingNode == null)
            {
                return(justThis);
            }
            if (DataFlowBackRelated.Any(x => x.ArgIndex == thisAsDataTrasferingNode.DataFlowDataProdivderIndex) == false)
            {
                return(justThis);
            }
            return(DataFlowBackRelated.Where(x => x.ArgIndex == thisAsDataTrasferingNode.DataFlowDataProdivderIndex)
                   .SelectMany(x => x.Argument.GetDataOriginNodes()));
        }
Esempio n. 4
0
 internal override void SelfRemoveAndStitch()
 {
     DataFlowBackRelated.RemoveAllTwoWay(x => x.ArgIndex == 0);
     base.SelfRemoveAndStitch();
 }