public List <int> CollectEdgeIds(NetworkTracerInputType type) { List <int> ret = new List <int>(); foreach (INetworkTracerInput input in this) { if (!(input is INetworkEdge)) { continue; } int id = ((INetworkEdge)input).EdgeId; switch (type) { case NetworkTracerInputType.Any: ret.Add(id); break; case NetworkTracerInputType.SoruceEdge: if (input is NetworkSourceEdgeInput) { ret.Add(id); } break; case NetworkTracerInputType.Weight: if (input is NetworkWeighInput) { ret.Add(id); } break; case NetworkTracerInputType.ForbiddenStartNodeEdgeIds: if (input is NetworkInputForbiddenStartNodeEdgeIds) { ret.Add(id); } break; case NetworkTracerInputType.ForbiddenEdgeIds: if (input is NetworkInputForbiddenEdgeIds) { ret.Add(id); } break; } } return(ret); }
public List <INetworkTracerInput> Collect(NetworkTracerInputType type) { List <INetworkTracerInput> ret = new List <INetworkTracerInput>(); foreach (INetworkTracerInput input in this) { if (input == null) { continue; } switch (type) { case NetworkTracerInputType.Any: ret.Add(input); break; case NetworkTracerInputType.SinkNode: if (input is NetworkSinkInput) { ret.Add(input); } break; case NetworkTracerInputType.SourceNode: if (input is NetworkSourceInput && !(input is NetworkSinkInput)) { ret.Add(input); } break; case NetworkTracerInputType.SoruceEdge: if (input is NetworkSourceEdgeInput) { ret.Add(input); } break; case NetworkTracerInputType.Weight: if (input is NetworkWeighInput) { ret.Add(input); } break; case NetworkTracerInputType.IgnoreSwitches: if (input is NetworkIgnoreSwitchState) { ret.Add(input); } break; case NetworkTracerInputType.AllowedNodeIds: if (input is NetworkInputAllowedNodeIds) { ret.Add(input); } break; case NetworkTracerInputType.ForbiddenTargetNodeIds: if (input is NetworkInputForbiddenTargetNodeIds) { ret.Add(input); } break; case NetworkTracerInputType.ForbiddenStartNodeEdgeIds: if (input is NetworkInputForbiddenStartNodeEdgeIds) { ret.Add(input); } break; case NetworkTracerInputType.ForbiddenEdgeIds: if (input is NetworkInputForbiddenEdgeIds) { ret.Add(input); } break; case NetworkTracerInputType.AppendNodeFlags: if (input is NetworkAppendNodeFlagsInput) { ret.Add(input); } break; case NetworkTracerInputType.BarrierNodes: if (input is NetworkBarrierNodeInput) { ret.Add(input); } break; } } return(ret); }
public bool Contains(NetworkTracerInputType type) { List <INetworkTracerInput> list = Collect(type); return(list.Count > 0); }