Exemple #1
0
        void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, DecompilationOptions options, ModuleDefinition module)
        {
            astBuilder.RunTransformations(transformAbortCondition);
            if (options.DecompilerSettings.ShowXmlDocumentation)
            {
                try {
                    AddXmlDocTransform.Run(astBuilder.SyntaxTree);
                } catch (XmlException ex) {
                    string[] msg            = (" Exception while reading XmlDoc: " + ex.ToString()).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    var      insertionPoint = astBuilder.SyntaxTree.FirstChild;
                    for (int i = 0; i < msg.Length; i++)
                    {
                        astBuilder.SyntaxTree.InsertChildBefore(insertionPoint, new CSharp.Comment(msg[i], CSharp.CommentType.Documentation), CSharp.Roles.Comment);
                    }
                }
            }
            var csharpUnit = astBuilder.SyntaxTree;

            csharpUnit.AcceptVisitor(new NRefactory.CSharp.InsertParenthesesVisitor()
            {
                InsertParenthesesForReadability = true
            });
            var unit             = csharpUnit.AcceptVisitor(new CSharpToVBConverterVisitor(new ILSpyEnvironmentProvider()), null);
            var outputFormatter  = new VBTextOutputFormatter(output);
            var formattingPolicy = new VBFormattingOptions();

            unit.AcceptVisitor(new OutputVisitor(outputFormatter, formattingPolicy), null);
        }
Exemple #2
0
 void RunTransformsEnd(AstBuilder astBuilder, DecompilationOptions options)
 {
     if (options.DecompilerSettings.ShowXmlDocumentation)
     {
         AddXmlDocTransform.Run(astBuilder.SyntaxTree);
     }
 }
Exemple #3
0
 private void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, DecompilationOptions options, IAstTransform additionalTransform = null)
 {
     astBuilder.RunTransformations(transformAbortCondition);
     if (additionalTransform != null)
     {
         additionalTransform.Run(astBuilder.SyntaxTree);
     }
     if (options.DecompilerSettings.ShowXmlDocumentation)
     {
         try
         {
             AddXmlDocTransform.Run(astBuilder.SyntaxTree);
         }
         catch (XmlException ex)
         {
             string[] msg            = (" Exception while reading XmlDoc: " + ex.ToString()).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
             var      insertionPoint = astBuilder.SyntaxTree.FirstChild;
             for (int i = 0; i < msg.Length; i++)
             {
                 astBuilder.SyntaxTree.InsertChildBefore(insertionPoint, new Comment(msg[i], CommentType.Documentation), Roles.Comment);
             }
         }
     }
     astBuilder.GenerateCode(output);
 }
 void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, DecompilationOptions options)
 {
     astBuilder.RunTransformations(transformAbortCondition);
     if (options.DecompilerSettings.ShowXmlDocumentation)
     {
         AddXmlDocTransform.Run(astBuilder.CompilationUnit);
     }
     astBuilder.GenerateCode(output);
 }
Exemple #5
0
 void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, DecompilationOptions options, IAstTransform additionalTransform = null)
 {
     astBuilder.RunTransformations(transformAbortCondition);
     if (additionalTransform != null)
     {
         additionalTransform.Run(astBuilder.SyntaxTree);
     }
     if (options.DecompilerSettings.ShowXmlDocumentation)
     {
         AddXmlDocTransform.Run(astBuilder.SyntaxTree);
     }
     astBuilder.GenerateCode(output);
 }
Exemple #6
0
        void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, DecompilationOptions options, ModuleDefinition module)
        {
            astBuilder.RunTransformations(transformAbortCondition);
            if (options.DecompilerSettings.ShowXmlDocumentation)
            {
                AddXmlDocTransform.Run(astBuilder.CompilationUnit);
            }
            var unit             = astBuilder.CompilationUnit.AcceptVisitor(new CSharpToCppConverterVisitor(new ILSpyEnvironmentProvider()), null);
            var outputFormatter  = new CppTextOutputFormatter(output);
            var formattingPolicy = new CppFormattingOptions();

            unit.AcceptVisitor(new CppOutputVisitor(outputFormatter, formattingPolicy), null);
        }
Exemple #7
0
		static IEnumerable<string> GetXmlDocComments(IMemberRef mr)
		{
			if (mr == null || mr.Module == null)
				yield break;
			var xmldoc = XmlDocLoader.LoadDocumentation(mr.Module);
			if (xmldoc == null)
				yield break;
			string doc = xmldoc.GetDocumentation(XmlDocKeyProvider.GetKey(mr));
			if (doc == null)
				yield break;

			foreach (var line in AddXmlDocTransform.GetXmlDocLines(new StringReader(doc)))
				yield return line;
		}
Exemple #8
0
 internal static void AddXmlDocumentation(DecompilerSettings settings, AstBuilder astBuilder)
 {
     if (settings.ShowXmlDocumentation)
     {
         try {
             AddXmlDocTransform.Run(astBuilder.SyntaxTree);
         }
         catch (XmlException ex) {
             string[] msg            = (" Exception while reading XmlDoc: " + ex.ToString()).Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
             var      insertionPoint = astBuilder.SyntaxTree.FirstChild;
             for (int i = 0; i < msg.Length; i++)
             {
                 astBuilder.SyntaxTree.InsertChildBefore(insertionPoint, new Comment(msg[i], CommentType.Documentation), Roles.Comment);
             }
         }
     }
 }
Exemple #9
0
        void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, DecompilationOptions options, ModuleDefinition module)
        {
            astBuilder.RunTransformations(transformAbortCondition);
            if (options.DecompilerSettings.ShowXmlDocumentation)
            {
                AddXmlDocTransform.Run(astBuilder.SyntaxTree);
            }
            var csharpUnit = astBuilder.SyntaxTree;

            csharpUnit.AcceptVisitor(new NRefactory.CSharp.InsertParenthesesVisitor()
            {
                InsertParenthesesForReadability = true
            });
            var unit             = csharpUnit.AcceptVisitor(new CSharpToVBConverterVisitor(new ILSpyEnvironmentProvider()), null);
            var outputFormatter  = new VBTextOutputFormatter(output);
            var formattingPolicy = new VBFormattingOptions();

            unit.AcceptVisitor(new OutputVisitor(outputFormatter, formattingPolicy), null);
        }
        private static string GenerateTypeDescription(ModuleDefinition module, TypeDefinition type)
        {
            var context    = new DecompilerContext(module);
            var astBuilder = new AstBuilder(context)
            {
                DecompileMethodBodies = false
            };

            astBuilder.AddType(type);

            if (!(type.IsEnum || type.IsInterface || type.IsDelegate()))
            {
                var typeNode = astBuilder.SyntaxTree.GetTypes()
                               .OfType <TypeDeclaration>().First();

                // Remove nested types
                foreach (var node in typeNode.Children)
                {
                    if (node is TypeDeclaration)
                    {
                        node.Remove();
                    }
                }

                // Remove non-public members
                foreach (var member in typeNode.Members)
                {
                    if (!(member.HasModifier(Modifiers.Public) || member.HasModifier(Modifiers.Protected)))
                    {
                        member.Remove();
                    }
                }
            }

            astBuilder.RunTransformations();
            AddXmlDocTransform.Run(astBuilder.SyntaxTree);
            var output = new PlainTextOutput();

            astBuilder.GenerateCode(output);
            return(output.ToString());
        }