Exemple #1
0
        private void ReadLoc(System.Xml.XmlElement root, Core.Dependency leaf)
        {
            int loc      = 0;
            var fileName = string.Empty;
            var nodes    = root.SelectNodes("location");

            foreach (var node in nodes)
            {
                if (node.GetType() != typeof(System.Xml.XmlElement))
                {
                    continue;
                }

                var element   = node as System.Xml.XmlElement;
                var bodystart = element.GetAttribute("bodystart");
                var bodyend   = element.GetAttribute("bodyend");
                fileName = element.GetAttribute("bodyfile");
                if (bodyend == "-1" || bodyend.Length == 0 || bodystart.Length == 0)
                {
                    continue;
                }

                loc += 1 + System.Convert.ToInt32(bodyend) - System.Convert.ToInt32(bodystart);
            }

            leaf.LOC = loc;

            fileName = "$(Source)/" + fileName;
            this.parser.Sources.Create(leaf, new DeepEnds.Core.SourceProvider(fileName));
        }
Exemple #2
0
        private void ReadReferences(System.Xml.XmlElement root, Core.Dependency leaf, System.IO.TextWriter logger)
        {
            var id = root.GetAttribute("id");

            this.lookup[id] = leaf;

            var list = new List <System.Xml.XmlElement>();

            this.SelectNodes(root, "basecompoundref", list);
            this.SelectNodes(root, "ref", list);
            this.SelectNodes(root, "references", list);

            var links = new List <string>();

            this.links[leaf] = links;
            foreach (var element in list)
            {
                if (!element.HasAttribute("refid"))
                {
                    logger.Write("! No refid for ");
                    logger.Write(element.InnerText);
                    logger.Write(" whilst processing ");
                    logger.WriteLine(leaf.Path("."));
                    continue;
                }

                var refid = element.GetAttribute("refid");
                links.Add(refid);
            }
        }
Exemple #3
0
        private void SetSourceProvider(Core.Dependency leaf, CXCursor cursor)
        {
            CXSourceRange    extent        = clang.getCursorExtent(cursor);
            CXSourceLocation startLocation = clang.getRangeStart(extent);

            uint startLine = 0, startColumn = 0, offset;

            CXFile file;

            clang.getSpellingLocation(startLocation, out file, out startLine, out startColumn, out offset);

            this.parser.Sources.Create(leaf, new Core.SourceProvider(clang.getFileName(file).ToString()));
        }
Exemple #4
0
        private void ReadCompoundDef(System.Xml.XmlElement root, System.IO.TextWriter logger)
        {
            Core.Dependency leaf  = null;
            var             nodes = root.SelectNodes("compoundname");

            foreach (var node in nodes)
            {
                if (node.GetType() != typeof(System.Xml.XmlElement))
                {
                    continue;
                }

                var element = node as System.Xml.XmlElement;
                var path    = element.InnerText;
                leaf = this.parser.Dependencies.GetPath(path, "::");
            }

            this.ReadLoc(root, leaf);
            this.ReadReferences(root, leaf, logger);
            this.ReadMembers(root, leaf);
        }
Exemple #5
0
        private void ReadMembers(System.Xml.XmlElement root, Core.Dependency leaf)
        {
            var list = new List <System.Xml.XmlElement>();

            this.SelectNodes(root, "memberdef", list);
            foreach (var element in list)
            {
                var kind = element.GetAttribute("kind");
                var id   = element.GetAttribute("id");
                if (this.memberTypes.Contains(kind))
                {
                    var nodes = element.SelectNodes("name");
                    foreach (var node in nodes)
                    {
                        if (node.GetType() != typeof(System.Xml.XmlElement))
                        {
                            continue;
                        }

                        var name = node as System.Xml.XmlElement;
                        if (this.memberHide)
                        {
                            this.lookup[id] = leaf;
                            continue;
                        }

                        var child = new Core.Dependency(name.InnerText, leaf);
                        leaf.AddChild(child);
                        this.lookup[id] = child;
                        this.ReadLoc(element, child);
                        if (leaf.LOC > child.LOC)
                        {
                            leaf.LOC -= child.LOC;
                        }
                    }
                }
            }
        }