Smrf.NodeXL.ExcelTemplate.GroupEdgeSorter.SortEdgesByVertex1 C# (CSharp) Method

SortEdgesByVertex1() private static method

private static SortEdgesByVertex1 ( IEnumerable oFilteredEdges, LinkedList &oSortedEdges, Dictionary &oFirstNodes ) : void
oFilteredEdges IEnumerable
oSortedEdges LinkedList
oFirstNodes Dictionary
return void
    SortEdgesByVertex1
    (
        IEnumerable<IEdge> oFilteredEdges,
        out LinkedList<IEdge> oSortedEdges,
        out Dictionary< IVertex, LinkedListNode<IEdge> > oFirstNodes
    )
    {
        Debug.Assert(oFilteredEdges != null);

        oSortedEdges = new LinkedList<IEdge>();
        oFirstNodes = new Dictionary< IVertex, LinkedListNode<IEdge> >();

        foreach (IEdge oEdge in oFilteredEdges)
        {
            IVertex oVertex1 = oEdge.Vertex1;
            LinkedListNode<IEdge> oFirstNodeForVertex;

            if ( oFirstNodes.TryGetValue(oVertex1, out oFirstNodeForVertex) )
            {
                oSortedEdges.AddAfter(oFirstNodeForVertex, oEdge);
            }
            else
            {
                oSortedEdges.AddFirst( (IEdge)null );
                oFirstNodeForVertex = oSortedEdges.AddFirst(oEdge);
                oFirstNodes.Add(oVertex1, oFirstNodeForVertex);
            }
        }

        #if false  // For testing.
        {
            foreach (IVertex oVertex in oFirstNodes.Keys)
            {
                Debug.WriteLine("First vertex: " + oVertex.Name);
                LinkedListNode<IEdge> oFirstNode = oFirstNodes[oVertex];

                while (oFirstNode.Value != null)
                {
                    Debug.WriteLine("    Edge: "
                        + oFirstNode.Value.Vertex1.Name + ", "
                        + oFirstNode.Value.Vertex2.Name);

                    oFirstNode = oFirstNode.Next;
                }
            }
        }
        #endif
    }