예제 #1
0
 internal void SelfRemove()
 {
     DataFlowForwardRelated.RemoveAllTwoWay();
     DataFlowBackRelated.RemoveAllTwoWay();
     foreach (var forwardRoute in ProgramFlowForwardRoutes)
     {
         forwardRoute.ProgramFlowBackRoutes.AddTwoWay(ProgramFlowBackRoutes);
     }
     //RemoveFromBranches();
     ProgramFlowBackRoutes.RemoveAllTwoWay();
     ProgramFlowForwardRoutes.RemoveAllTwoWay();
 }
예제 #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();
     }
 }