Esempio n. 1
0
        internal MyClassInfo FindNamespaceMember(string assemblyName, string namezpace, NamespaceMembersGroups namespaceMemberGroupType, string memberName)
        {
            MyNamespaceInfo myNamespaceInfo = FindNamespace(assemblyName, namezpace);

            if (myNamespaceInfo == null)
            {
                return(null);
            }

            return(myNamespaceInfo.FindMember(namespaceMemberGroupType, memberName));
        }
Esempio n. 2
0
        internal List <MyNamespaceInfo> FindNamespaces(string namezpace)
        {
            List <MyNamespaceInfo> namespaces = new List <MyNamespaceInfo>();

            foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
            {
                MyNamespaceInfo myNamespaceInfo = myAssemblyInfo.FindNamespace(namezpace);

                if (myNamespaceInfo != null)
                {
                    namespaces.Add(myNamespaceInfo);
                }
            }

            return(namespaces);
        }
Esempio n. 3
0
        internal MetaClass FindMember(string xmlMemberId)
        {
            char memberType = xmlMemberId[0];

            xmlMemberId = xmlMemberId.Substring(2);

            switch (memberType)
            {
            case 'T':
            {
                foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
                {
                    MyClassInfo myClassInfo = myAssemblyInfo.FindNamespaceMember(xmlMemberId);

                    if (myClassInfo != null)
                    {
                        return(myClassInfo);
                    }
                }

                break;
            }

            case 'M':
            {
                foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
                {
                    MyInvokableMemberInfo myInvokableMemberInfo = myAssemblyInfo.FindMethodOrConstructor(xmlMemberId, true);

                    if (myInvokableMemberInfo != null)
                    {
                        return(myInvokableMemberInfo);
                    }
                }

                break;
            }

            case 'F':
            {
                foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
                {
                    MyFieldInfo myFieldInfo = myAssemblyInfo.FindField(xmlMemberId, true);

                    if (myFieldInfo != null)
                    {
                        return(myFieldInfo);
                    }
                }

                break;
            }

            case 'P':
            {
                foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
                {
                    MyPropertyInfo myPropertyInfo = myAssemblyInfo.FindProperty(xmlMemberId, true);

                    if (myPropertyInfo != null)
                    {
                        return(myPropertyInfo);
                    }
                }

                break;
            }

            case 'E':
            {
                foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
                {
                    MyEventInfo myEventInfo = myAssemblyInfo.FindEvent(xmlMemberId, true);

                    if (myEventInfo != null)
                    {
                        return(myEventInfo);
                    }
                }

                break;
            }

            case 'N':
            {
                foreach (MyAssemblyInfo myAssemblyInfo in assemblies.Values)
                {
                    MyNamespaceInfo myNamespaceInfo = myAssemblyInfo.FindNamespace(xmlMemberId);

                    if (myNamespaceInfo != null)
                    {
                        return(myNamespaceInfo);
                    }
                }

                break;
            }
            }

            return(null);
        }
Esempio n. 4
0
        public void ReadAdditionalDocumentation(string xmlDocPath)
        {
            string      xmlDocAbsolutePath = Path.GetFullPath(xmlDocPath);
            XmlDocument xmlDoc             = new XmlDocument();

            try
            {
                xmlDoc.Load(xmlDocAbsolutePath);
            }
            catch (XmlException)
            {
                Logger.Warning("Couldn't load file with additional documentation: '{0}'.", xmlDocAbsolutePath);
                return;
            }

            XmlNodeList assemblyNodes = xmlDoc.GetElementsByTagName("assembly");

            foreach (XmlNode assemblyNode in assemblyNodes)
            {
                XmlAttribute assemblyNameAttribute = assemblyNode.Attributes["name"];
                if (assemblyNameAttribute == null)
                {
                    Logger.Warning("Assembly element in additional documentation file doesn't contain required 'name' attribute.");
                    continue;
                }
                string assemblyName = assemblyNameAttribute.Value;

                string      assemblySummary      = "";
                XmlNodeList assemblySummaryNodes = assemblyNode.SelectNodes("summary");
                foreach (XmlNode assemblySummaryNode in assemblySummaryNodes)
                {
                    assemblySummary += assemblySummaryNode.InnerXml;
                }

                MyAssemblyInfo myAssemblyInfo = FindAssembly(assemblyName);
                if (myAssemblyInfo == null)
                {
                    Logger.Warning("Assembly named '{0}' couldn't be found.", assemblyName);
                    continue;
                }

                myAssemblyInfo.Summary = assemblySummary;

                XmlNodeList namespaceNodes = assemblyNode.SelectNodes("namespace");
                foreach (XmlNode namespaceNode in namespaceNodes)
                {
                    XmlAttribute namespaceNameAttribute = namespaceNode.Attributes["name"];
                    if (namespaceNameAttribute == null)
                    {
                        Logger.Warning("Namespace element in additional documentation file doesn't contain required 'name' attribute.");
                        continue;
                    }
                    string namespaceName = namespaceNameAttribute.Value;

                    string      namespaceSummary      = "";
                    XmlNodeList namespaceSummaryNodes = namespaceNode.SelectNodes("summary");
                    foreach (XmlNode namespaceSummaryNode in namespaceSummaryNodes)
                    {
                        namespaceSummary += namespaceSummaryNode.InnerXml;
                    }

                    MyNamespaceInfo myNamespaceInfo = myAssemblyInfo.FindNamespace(namespaceName);
                    if (myNamespaceInfo == null)
                    {
                        Logger.Warning("Namespace named '{0}' couldn't be found in assembly '{1}' (or has been omitted due to lack of exported types).", namespaceName, assemblyName);
                        continue;
                    }

                    myNamespaceInfo.Summary = namespaceSummary;
                }
            }
        }