internal void SelfRemove() { DataFlowForwardRelated.RemoveAllTwoWay(); DataFlowBackRelated.RemoveAllTwoWay(); foreach (var forwardRoute in ProgramFlowForwardRoutes) { forwardRoute.ProgramFlowBackRoutes.AddTwoWay(ProgramFlowBackRoutes); } //RemoveFromBranches(); ProgramFlowBackRoutes.RemoveAllTwoWay(); ProgramFlowForwardRoutes.RemoveAllTwoWay(); }
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(); } }
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())); }
internal override void SelfRemoveAndStitch() { DataFlowBackRelated.RemoveAllTwoWay(x => x.ArgIndex == 0); base.SelfRemoveAndStitch(); }