/// <summary> /// Create new edge between two nodes. If the same edge is already contained in this graph, new edge isn't created. /// </summary> /// <param name="v1">Starting node</param> /// <param name="v2">Ending node</param> /// <returns> Reference to the added (or finded) edge</returns> public override IEdge addEdge(Vertex v1, Vertex v2) { if (v1 == null || v2 == null) { return(null); } IEdge e = new OrientedEdge(v1, v2); foreach (IEdge edge in innerEdges) { if (edge.Equals(e)) { return(edge); } } innerEdges.Add(e); foreach (var obs in innerEdgeObs) { obs.update(e, ChangeType.Added); } return(e); }
/// <summary> /// Determines whether this two edges are equal. /// </summary> /// <param name="e">The other edge</param> /// <returns>true if starting and ending node are the same</returns> public bool Equals(OrientedEdge e) { if (this.Vertex_1 == e.Vertex_1 && this.Vertex_2 == e.Vertex_2) { return(true); } else { return(false); } }
/// <summary> /// Determines whether this two edges are equal. /// </summary> /// <param name="obj">The other edge</param> /// <returns>true if starting and ending node are the same</returns> public override bool Equals(object obj) { if (obj == null) { return(false); } OrientedEdge e = obj as OrientedEdge; if (e == null) { return(false); } return(this.Equals(e)); }
/// <summary> /// Create new edge between two nodes. If the same edge is already contained in this graph, new edge isn't created. /// </summary> /// <param name="v1">Starting node</param> /// <param name="v2">Ending node</param> /// <returns> Reference to the added (or finded) edge</returns> public override IEdge addEdge(Vertex v1, Vertex v2) { if (v1 == null || v2 == null) { return null; } IEdge e = new OrientedEdge(v1, v2); foreach (IEdge edge in innerEdges) { if (edge.Equals(e)) { return edge; } } innerEdges.Add(e); foreach (var obs in innerEdgeObs) { obs.update(e, ChangeType.Added); } return e; }
/// <summary> /// Determines whether this two edges are equal. /// </summary> /// <param name="e">The other edge</param> /// <returns>true if starting and ending node are the same</returns> public bool Equals(OrientedEdge e) { if (this.Vertex_1 == e.Vertex_1 && this.Vertex_2 == e.Vertex_2) { return true; } else { return false; } }