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)); }
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); } }
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())); }
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); }
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; } } } } }