Analyzer.OverallMetricCalculator.CalculateConnectedComponentMetrics C# (CSharp) Method

CalculateConnectedComponentMetrics() protected method

protected CalculateConnectedComponentMetrics ( IGraph oGraph, Int32 &iConnectedComponents, Int32 &iSingleVertexConnectedComponents, Int32 &iMaximumConnectedComponentVertices, Int32 &iMaximumConnectedComponentEdges ) : void
oGraph IGraph
iConnectedComponents System.Int32
iSingleVertexConnectedComponents System.Int32
iMaximumConnectedComponentVertices System.Int32
iMaximumConnectedComponentEdges System.Int32
return void
        protected void CalculateConnectedComponentMetrics
        (
            IGraph oGraph,
            out Int32 iConnectedComponents,
            out Int32 iSingleVertexConnectedComponents,
            out Int32 iMaximumConnectedComponentVertices,
            out Int32 iMaximumConnectedComponentEdges
        )
        {
            Debug.Assert(oGraph != null);


            ConnectedComponentCalculator oConnectedComponentCalculator =
                new ConnectedComponentCalculator();

            IList<LinkedList<IVertex>> oConnectedComponents =
                oConnectedComponentCalculator.CalculateStronglyConnectedComponents(
                    oGraph, true);

            iConnectedComponents = oConnectedComponents.Count;
            iSingleVertexConnectedComponents = 0;
            iMaximumConnectedComponentVertices = 0;
            iMaximumConnectedComponentEdges = 0;

            foreach (LinkedList<IVertex> oConnectedComponent in
                oConnectedComponents)
            {
                Int32 iVertices = oConnectedComponent.Count;

                if (iVertices == 1)
                {
                    iSingleVertexConnectedComponents++;
                }

                iMaximumConnectedComponentVertices = Math.Max(
                    iMaximumConnectedComponentVertices, iVertices);

                iMaximumConnectedComponentEdges = Math.Max(
                    iMaximumConnectedComponentEdges,
                    CountUniqueEdges(oConnectedComponent));
            }
        }