/// <summary> /// Load the given class /// </summary> private void LoadClass(XElement compounddef) { var id = compounddef.GetAttribute("id"); var name = compounddef.GetElementValue("compoundname"); var xmlClass = new DocClass(name) { Id = id, Description = GetDescription(compounddef) }; classesById.Add(xmlClass.Id, xmlClass); classesByName.Add(xmlClass.Name, xmlClass); var index = xmlClass.Name.IndexOf('<'); if (index > 0) { // Generic class var elementName = xmlClass.Name.Substring(0, index); if (!classesByName.ContainsKey(elementName)) { classesByName.Add(elementName, xmlClass); } } foreach (var memberdef in compounddef.Descendants("memberdef").Where(x => x.GetAttribute("kind") == "function")) { LoadMethod(xmlClass, memberdef); } foreach (var memberdef in compounddef.Descendants("memberdef").Where(x => x.GetAttribute("kind") == "variable")) { LoadField(xmlClass, memberdef); } }
/// <summary> /// Load the given field /// </summary> private void LoadField(DocClass @class, XElement memberdef) { var name = memberdef.GetElementValue("name"); var xmlField = new DocField(name) { Description = GetDescription(memberdef) }; @class.Fields.Add(xmlField); }
/// <summary> /// Load the given method /// </summary> private void LoadMethod(DocClass @class, XElement memberdef) { var name = memberdef.GetElementValue("name"); var xmlMethod = new DocMethod(name) { Description = GetDescription(memberdef) }; @class.Methods.Add(xmlMethod); // Load parameter var ns = @class.Namespace; foreach (var p in memberdef.Elements("param")) { LoadParameter(xmlMethod, p, ns); } }
/// <summary> /// Try to get a class by it's name. /// </summary> public bool TryGetClassByName(string name, out DocClass @class) { return(classesByName.TryGetValue(name, out @class)); }
/// <summary> /// Try to get a class by it's id. /// </summary> public bool TryGetClassById(string id, out DocClass @class) { return(classesById.TryGetValue(id, out @class)); }