Exemplo n.º 1
0
        public void ToGraphViz(AstTypeDependencyGraph dep)
        {
            Graph.SetRankDir(DotRankDirection.LeftToRight);

            foreach (var astTypeDep in dep.Items)
            {
                var node = AddNode(astTypeDep.BaseItem);

                if (astTypeDep.BaseItem.IsValidStructureType)
                {
                    var usedTypes = astTypeDep.UsedItems;

                    foreach (var usedType in usedTypes)
                    {
                        AddEdge(usedType, astTypeDep.BaseItem);
                    }
                }
                else
                {
                    if (astTypeDep.UsedCount > 0)
                    {
                        node
                        .AddEdgesFrom(
                            astTypeDep.UsedItems.Select(t => t.GMacTypeSignature)
                            );
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Construct a type dependency graph of all types under this AST
        /// </summary>
        /// <returns></returns>
        public AstTypeDependencyGraph GetTypeDependencies()
        {
            var dep = new AstTypeDependencyGraph(this);

            dep.Populate();

            return(dep);
        }
Exemplo n.º 3
0
        public static DotGraph ToGraphViz(this AstTypeDependencyGraph depGraph)
        {
            var visitor = new AstTypesDependencyToGraphViz();

            visitor.ToGraphViz(depGraph);

            return(visitor.Graph);
        }
Exemplo n.º 4
0
        public void Visit(AstType astType)
        {
            _dependencyGraph = astType.Root.GetTypeDependencies();

            Graph.SetRankDir(DotRankDirection.LeftToRight);

            AddNode(astType)
            .SetFillColor(Color.GreenYellow.ToDotRgbColor());

            _dict.Clear();

            AddUserTypes(astType);

            _dict.Clear();

            AddUsedTypes(astType);
        }
Exemplo n.º 5
0
 public GMacAstDescriptionVisitor(AstRoot root)
 {
     Root = root;
     _typeDepGraph = Root.GetTypeDependencies();
     _macroDepGraph = Root.GetMacroDependencies();
 }