{-# LANGUAGE TypeFamilies, TypeOperators, FlexibleInstances, MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
-- |
-- Module : GraphHammer.VertexDegree
-- Copyright : (C) 2013 Parallel Scientific Labs, LLC.
-- License : GPLv2
--
--
-- Vertex degree analysis.
--
-- For each node calculate the number of vertices from that node.
module GraphHammer.VertexDegree(
VertexDegree(..)
, vertexDegree
) where
import GraphHammer
------------------------------------------------------------------------------------
-- Typical basic analysis.
-- | VertexDegree Tag
data VertexDegree = VertexDegree
type instance RequiredAnalyses VertexDegree = Nil
-- | Run vertex degree analysis:
--
-- For each node calculate number of outgoing connections.
vertexDegree :: EnabledAnalysis VertexDegree wholeset => Analysis (VertexDegree :. Nil) wholeset
vertexDegree = basicAnalysis VertexDegree $ \a from to -> do
incrementAnalysisResult a from (cst 1)
incrementAnalysisResult a to (cst 1)
return ()