コード例 #1
0
        static void ReadClassDefinition(WrapperProject project, XmlReader reader, HeaderDefinition header, ClassDefinition parent = null)
        {
            string className = reader.GetAttribute("Name");

            ClassDefinition @class;
            string classType = reader.Name;
            switch (classType)
            {
                case "Class":
                    @class = new ClassDefinition(className, header, parent);
                    break;
                case "ClassTemplate":
                    @class = new ClassTemplateDefinition(className, header, parent);
                    break;
                case "Enum":
                    @class = new EnumDefinition(className, header, parent);
                    break;
                default:
                    throw new NotImplementedException();
            }

            string namespaceName = reader.GetAttribute("Namespace");
            if (namespaceName != null)
            {
                @class.NamespaceName = namespaceName;
            }

            if ("true".Equals(reader.GetAttribute("IsExcluded")))
            {
                @class.IsExcluded = true;
            }
            if ("true".Equals(reader.GetAttribute("HasPreventDelete")))
            {
                @class.HasPreventDelete = true;
            }
            project.ClassDefinitions.Add(@class.FullyQualifiedName, @class);

            if (reader.IsEmptyElement)
            {
                return;
            }

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                        case "Class":
                        case "ClassTemplate":
                        case "Enum":
                            {
                                ReadClassDefinition(project, reader, header, @class);
                            }
                            break;
                        case "Method":
                            {
                                ReadMethodDefinition(reader, @class);
                            }
                            break;
                    }
                }
                else if (reader.NodeType == XmlNodeType.EndElement)
                {
                    break;
                }
            }
        }
コード例 #2
0
        static IEnumerable <ClassDefinition> ReadClassDefinition(WrapperProject project,
                                                                 XmlReader reader, HeaderDefinition header, ClassDefinition parent = null)
        {
            string className = reader.GetAttribute("Name");

            ClassDefinition @class;
            string          classType = reader.Name;

            switch (classType)
            {
            case "Class":
                @class = new ClassDefinition(className, header, parent);
                break;

            case "ClassTemplate":
                @class = new ClassTemplateDefinition(className, header, parent);
                break;

            case "Enum":
                @class = new EnumDefinition(className, header, parent);
                break;

            default:
                throw new NotImplementedException();
            }

            string namespaceName = reader.GetAttribute("Namespace");

            if (namespaceName != null)
            {
                @class.NamespaceName = namespaceName;
            }

            if ("true".Equals(reader.GetAttribute("IsExcluded")))
            {
                @class.IsExcluded = true;
            }
            if ("true".Equals(reader.GetAttribute("HasPreventDelete")))
            {
                @class.HasPreventDelete = true;
            }
            if ("true".Equals(reader.GetAttribute("MarshalAsStruct")))
            {
                @class.MarshalAsStruct = true;
            }

            if (reader.IsEmptyElement)
            {
                yield return(@class);

                yield break;
            }

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "Class":
                    case "ClassTemplate":
                    case "Enum":
                        var classes = ReadClassDefinition(project, reader, header, @class);
                        foreach (var c in classes)
                        {
                            yield return(c);
                        }
                        break;

                    case "Method":
                        ReadMethodDefinition(reader, @class);
                        break;

                    case "TemplateParameter":
                        (@class as ClassTemplateDefinition).TemplateParameters
                        .Add(reader.ReadElementContentAsString());
                        break;
                    }
                }
                else if (reader.NodeType == XmlNodeType.EndElement)
                {
                    break;
                }
            }

            yield return(@class);
        }
コード例 #3
0
        static void ReadClassDefinition(WrapperProject project, XmlReader reader, HeaderDefinition header, ClassDefinition parent = null)
        {
            string className = reader.GetAttribute("Name");

            ClassDefinition @class;
            string          classType = reader.Name;

            switch (classType)
            {
            case "ClassDefinition":
                @class = new ClassDefinition(className, header, parent);
                break;

            case "ClassTemplateDefinition":
                @class = new ClassTemplateDefinition(className, header, parent);
                break;

            case "EnumDefinition":
                @class = new EnumDefinition(className, header, parent);
                break;

            default:
                throw new NotImplementedException();
            }

            string namespaceName = reader.GetAttribute("Namespace");

            if (namespaceName != null)
            {
                @class.NamespaceName = namespaceName;
            }

            string isExcluded = reader.GetAttribute("IsExcluded");

            if ("true".Equals(isExcluded))
            {
                @class.IsExcluded = true;
            }
            project.ClassDefinitions.Add(@class.FullyQualifiedName, @class);

            if (reader.IsEmptyElement)
            {
                return;
            }

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "ClassDefinition":
                    case "ClassTemplateDefinition":
                    case "EnumDefinition":
                    {
                        ReadClassDefinition(project, reader, header, @class);
                    }
                    break;
                    }
                }
                else if (reader.NodeType == XmlNodeType.EndElement)
                {
                    break;
                }
            }
        }
コード例 #4
0
        static IEnumerable<ClassDefinition> ReadClassDefinition(WrapperProject project,
            XmlReader reader, HeaderDefinition header, ClassDefinition parent = null)
        {
            string className = reader.GetAttribute("Name");

            ClassDefinition @class;
            string classType = reader.Name;
            switch (classType)
            {
                case "Class":
                    @class = new ClassDefinition(className, header, parent);
                    break;
                case "ClassTemplate":
                    @class = new ClassTemplateDefinition(className, header, parent);
                    break;
                case "Enum":
                    @class = new EnumDefinition(className, header, parent);
                    break;
                default:
                    throw new NotImplementedException();
            }

            string namespaceName = reader.GetAttribute("Namespace");
            if (namespaceName != null)
            {
                @class.NamespaceName = namespaceName;
            }

            if ("true".Equals(reader.GetAttribute("IsExcluded"))) @class.IsExcluded = true;
            if ("true".Equals(reader.GetAttribute("HasPreventDelete"))) @class.HasPreventDelete = true;
            if ("true".Equals(reader.GetAttribute("MarshalAsStruct"))) @class.MarshalAsStruct = true;

            if (reader.IsEmptyElement)
            {
                yield return @class;
                yield break;
            }

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                        case "Class":
                        case "ClassTemplate":
                        case "Enum":
                            var classes = ReadClassDefinition(project, reader, header, @class);
                            foreach (var c in classes)
                            {
                                yield return c;
                            }
                            break;

                        case "Method":
                            ReadMethodDefinition(reader, @class);
                            break;

                        case "TemplateParameter":
                            (@class as ClassTemplateDefinition).TemplateParameters
                                .Add(reader.ReadElementContentAsString());
                            break;
                    }
                }
                else if (reader.NodeType == XmlNodeType.EndElement)
                {
                    break;
                }
            }

            yield return @class;
        }