Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #4
0
 /// <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));
 }
Beispiel #5
0
 /// <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));
 }