From 753dfd5d6528bdc5aa0e5331859ba1aca50ca4fa Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 16 Apr 2011 21:41:16 +0200 Subject: [PATCH] Remove Eusebiu's metadata decompiler. --- .../Project/ICSharpCode.SharpDevelop.addin | 3 - .../Project/ICSharpCode.SharpDevelop.csproj | 11 - .../Src/Editor/Commands/GoToDefinition.cs | 5 +- .../IDEOptions/SharpDevelopUIOptions.xaml | 15 - .../IDEOptions/SharpDevelopUIOptions.xaml.cs | 21 -- .../TreeNodes/InnerExpand/MemberNodes.cs | 163 --------- .../TreeNodes/InnerExpand/NamespaceNode.cs | 101 ------ .../TreeNodes/InnerExpand/TypeNodes.cs | 279 --------------- .../TreeNodes/ReferenceFolder.cs | 12 - .../ProjectBrowser/TreeNodes/ReferenceNode.cs | 74 +--- .../DecompilerService/DecompilerService.cs | 338 ------------------ 11 files changed, 4 insertions(+), 1018 deletions(-) delete mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml delete mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml.cs delete mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/MemberNodes.cs delete mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/NamespaceNode.cs delete mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/TypeNodes.cs delete mode 100644 src/Main/Base/Project/Src/Services/DecompilerService/DecompilerService.cs diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin index b4bbface61..4c260f3c4e 100755 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin @@ -1078,9 +1078,6 @@ - diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index f972c6aa46..9518e0dcff 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -243,10 +243,6 @@ SelectCulturePanel.xaml Code - - SharpDevelopUIOptions.xaml - Code - WebProjectOptionsPanel.xaml @@ -273,9 +269,6 @@ - - - @@ -326,7 +319,6 @@ - @@ -823,7 +815,6 @@ - @@ -858,10 +849,8 @@ - - diff --git a/src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs b/src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs index 99f3ae6425..8f7794f90c 100644 --- a/src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs +++ b/src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs @@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands return; FilePosition pos = symbol.GetDefinitionPosition(); if (pos.IsEmpty) { - new GoToDecompiledDefinition().Run(symbol); + //new GoToDecompiledDefinition().Run(symbol); } else { try { if (pos.Position.IsEmpty) @@ -33,6 +33,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands } } + /* public class GoToDecompiledDefinition : AbstractMenuCommand { /// @@ -129,5 +130,5 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands FileService.OpenFile(filePath); } } - } + }*/ } diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml deleted file mode 100644 index 61efd58c9f..0000000000 --- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml.cs deleted file mode 100644 index 42ef53ac1a..0000000000 --- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SharpDevelopUIOptions.xaml.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) -using System; -using System.Windows.Controls; -using ICSharpCode.Core; - -namespace ICSharpCode.SharpDevelop.Gui.OptionPanels -{ - public partial class SharpDevelopUIOptions : OptionPanel - { - public SharpDevelopUIOptions() - { - InitializeComponent(); - } - - public static bool ExpandReferences { - get { return PropertyService.Get("ExpandReferences", false); } - set { PropertyService.Set("ExpandReferences", value); } - } - } -} \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/MemberNodes.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/MemberNodes.cs deleted file mode 100644 index b90c86c7de..0000000000 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/MemberNodes.cs +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) -using System; -using Mono.Cecil; - -namespace ICSharpCode.SharpDevelop.Project.InnerExpand -{ - public abstract class MemberNode : AbstractProjectBrowserTreeNode - { - protected readonly MemberReference member; - protected readonly TypeDefinition type; - - public MemberNode(string name, MemberReference member, TypeDefinition type) - { - this.member = member; - this.type = type; - Text = name; - } - - public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data) - { - return visitor.Visit(this, data); - } - } - - #region Field nodes - public class PublicFieldNode : MemberNode - { - public PublicFieldNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.Field"); - } - } - - public class InternalFieldNode : MemberNode - { - public InternalFieldNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.InteralField"); - } - } - - public class ProtectedFieldNode : MemberNode - { - public ProtectedFieldNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.ProtectedField"); - } - } - - public class PrivateFieldNode : MemberNode - { - public PrivateFieldNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.PrivateField"); - } - } - #endregion - - #region Properties nodes - public class PublicPropertyNode : MemberNode - { - public PublicPropertyNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.Property"); - } - } - - public class InternalPropertyNode : MemberNode - { - public InternalPropertyNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.InteralProperty"); - } - } - - public class ProtectedPropertyNode : MemberNode - { - public ProtectedPropertyNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.ProtectedProperty"); - } - } - - public class PrivatePropertyNode : MemberNode - { - public PrivatePropertyNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.PrivateProperty"); - } - } - #endregion - - #region Method nodes - - public class PublicMethodNode : MemberNode - { - public PublicMethodNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.Method"); - } - } - - public class InternalMethodNode : MemberNode - { - public InternalMethodNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.InternalMethod"); - } - } - - public class ProtectedMethodNode : MemberNode - { - public ProtectedMethodNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.ProtectedMethod"); - } - } - - public class PrivateMethodNode : MemberNode - { - public PrivateMethodNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.PrivateMethod"); - } - } - - #endregion - - #region Event node - public class PublicEventNode : MemberNode - { - public PublicEventNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.Event"); - } - } - - public class InternalEventNode : MemberNode - { - public InternalEventNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.InternalEvent"); - } - } - - public class ProtectedEventNode : MemberNode - { - public ProtectedEventNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.ProtectedEvent"); - } - } - - public class PrivateEventNode : MemberNode - { - public PrivateEventNode(string name, MemberReference member, TypeDefinition type) : base(name, member, type) - { - SetIcon("Icons.16x16.PrivateEvent"); - } - } - #endregion -} diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/NamespaceNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/NamespaceNode.cs deleted file mode 100644 index 7ad9bd1edd..0000000000 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/NamespaceNode.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) -using System; -using System.Collections.Generic; -using System.Windows; -using System.Windows.Forms; - -using ICSharpCode.Core; -using Mono.Cecil; - -namespace ICSharpCode.SharpDevelop.Project.InnerExpand -{ - public class NamespaceNode : CustomFolderNode - { - readonly List types; - - public NamespaceNode(string name, List types) - { - SetIcon("Icons.16x16.NameSpace"); - Text = name; - this.types = types; - - this.PerformInitialization(); - } - - public void RefreshNodes(bool forceRefresh = false) - { - if (Nodes.Count > 0 && !forceRefresh) - return; - - Nodes.Clear(); - - foreach (var type in types) { - TypeNode node = null; - string name = type.Name; - - if (type.IsValueType) { - if (type.IsPublic) { - node = new PublicStructNode(name, type); - } else { - node = new PrivateStructNode(name, type); - } - } else { - if (type.IsEnum) { - if (type.IsPublic) { - node = new PublicEnumNode(name, type); - } else { - node = new PrivateEnumNode(name, type); - } - } else { - - if (type.BaseType != null && type.BaseType.FullName == "System.MulticastDelegate"){ - if (type.IsPublic) { - node = new PublicDelegateNode(name, type); - } else { - node = new PrivateDelegateNode(name, type); - } - } else { - if (type.IsClass) { - if (type.IsPublic) { - node = new PublicClassNode(name, type); - } else { - node = new PrivateClassNode(name, type); - } - } - else { - if (type.IsInterface) { - if (type.IsPublic) { - node = new PublicInterfaceNode(name, type); - } else { - node = new PrivateInterfaceNode(name, type); - } - } - } - } - } - } - - if (node != null) - node.InsertSorted(this); - } - } - - public override void Expanding() - { - foreach (var node in Nodes) { - if (!(node is TypeNode)) continue; - - var n = (TypeNode)node; - n.ShowMembers(); - } - - base.Expanding(); - } - - public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data) - { - return visitor.Visit(this, data); - } - } -} \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/TypeNodes.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/TypeNodes.cs deleted file mode 100644 index 4d348b1bd6..0000000000 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/InnerExpand/TypeNodes.cs +++ /dev/null @@ -1,279 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) -using System; -using System.Text; -using Mono.Cecil; - -namespace ICSharpCode.SharpDevelop.Project.InnerExpand -{ - public abstract class TypeNode : AbstractProjectBrowserTreeNode - { - protected readonly TypeDefinition type; - - public TypeNode(string name, TypeDefinition type) - { - Text = name; - this.type = type; - - this.PerformInitialization(); - } - - public virtual void ShowMembers(bool forceRefresh = false) - { - if (Nodes.Count > 0 && !forceRefresh) - return; - - Nodes.Clear(); - - foreach (var ev in type.Events) { - if (ev.AddMethod == null && ev.RemoveMethod == null ) continue; - - if (ev.AddMethod != null && !ev.AddMethod.IsPublic && - ev.RemoveMethod != null && !ev.RemoveMethod.IsPublic) continue; - - new PublicEventNode(ev.Name, ev, type).InsertSorted(this); - } - - foreach (var property in type.Properties) { - if (property.GetMethod == null && property.SetMethod == null ) continue; - - if (property.GetMethod != null && !property.GetMethod.IsPublic && - property.SetMethod != null && !property.SetMethod.IsPublic) continue; - new PublicPropertyNode(property.Name, property, type).InsertSorted(this); - } - - foreach (var method in type.Methods) { - if (!method.IsPublic) continue; - if (method.Name.StartsWith("get_") || method.Name.StartsWith("set_")) continue; - - StringBuilder sb = new StringBuilder(); - - if (!method.IsConstructor) { - sb.Append(method.Name); - } else { - sb.Append(method.DeclaringType.Name); - } - - sb.Append(DecompilerService.GetParameters(method)); - - new PublicMethodNode(sb.ToString(), method, type).InsertSorted(this); - } - } - - public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data) - { - return visitor.Visit(this, data); - } - } - - #region Classes - - public abstract class ClassNode : TypeNode - { - public ClassNode(string name, TypeDefinition type) : base(name, type) { } - } - - public class PublicClassNode : ClassNode - { - public PublicClassNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.Class"); - } - } - - public class InternalClassNode : ClassNode - { - public InternalClassNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.InternalClass"); - } - } - - public class ProtectedClassNode : ClassNode - { - public ProtectedClassNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.ProtectedClass"); - } - } - - public class PrivateClassNode : ClassNode - { - public PrivateClassNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.PrivateClass"); - } - } - - #endregion - - #region Interfaces - public abstract class InterfaceNode : TypeNode - { - public InterfaceNode(string name, TypeDefinition type) : base(name, type) { } - - } - - public class PublicInterfaceNode : InterfaceNode - { - public PublicInterfaceNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.Interface"); - } - } - - public class InternalInterfaceNode : InterfaceNode - { - public InternalInterfaceNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.InternalInterface"); - } - } - - public class ProtectedInterfaceNode : InterfaceNode - { - public ProtectedInterfaceNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.ProtectedInterface"); - } - } - - public class PrivateInterfaceNode : InterfaceNode - { - public PrivateInterfaceNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.PrivateInterface"); - } - } - - #endregion - - #region Structs - - public abstract class StructNode : TypeNode - { - public StructNode(string name, TypeDefinition type) : base(name, type) - { - } - } - - public class PublicStructNode : StructNode - { - public PublicStructNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.Struct"); - } - } - - public class InternalStructNode : StructNode - { - public InternalStructNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.InternalStruct"); - } - } - - public class ProtectedStructNode : StructNode - { - public ProtectedStructNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.ProtectedStruct"); - } - } - - public class PrivateStructNode : StructNode - { - public PrivateStructNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.PrivateStruct"); - } - } - #endregion - - #region Enums - public abstract class EnumNode : TypeNode - { - public EnumNode(string name, TypeDefinition type) : base(name, type) - { - } - } - - public class PublicEnumNode : EnumNode - { - public PublicEnumNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.Enum"); - } - } - - public class IntenalEnumNode : EnumNode - { - public IntenalEnumNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.InternalEnum"); - } - } - - public class ProtectedEnumNode : EnumNode - { - public ProtectedEnumNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.ProtectedEnum"); - } - } - - public class PrivateEnumNode : EnumNode - { - public PrivateEnumNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.PrivateEnum"); - } - } - #endregion - - #region Delegates - public abstract class DelegateNode : TypeNode - { - public DelegateNode(string name, TypeDefinition type) : base(name, type) - { - } - - public override void ShowMembers(bool forceRefresh) - { - // do nothing - } - } - - public class PublicDelegateNode : DelegateNode - { - public PublicDelegateNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.Delegate"); - } - } - - public class InternalDelegateNode : DelegateNode - { - public InternalDelegateNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.InternalDelegate"); - } - } - - public class ProtectedDelegateNode : DelegateNode - { - public ProtectedDelegateNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.ProtectedDelegate"); - } - } - - public class PrivateDelegateNode : DelegateNode - { - public PrivateDelegateNode(string name, TypeDefinition type) : base(name, type) - { - SetIcon("Icons.16x16.PrivateDelegate"); - } - } - #endregion -} diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceFolder.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceFolder.cs index 880088984c..e3a1ce4dbc 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceFolder.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceFolder.cs @@ -42,18 +42,6 @@ namespace ICSharpCode.SharpDevelop.Project UpdateIcon(); } - public override void Expanding() - { - foreach (var node in Nodes) { - if (!(node is ReferenceNode)) continue; - - var n = (ReferenceNode)node; - n.ShowNamespaces(); - } - - base.Expanding(); - } - protected override void Initialize() { ShowReferences(); diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs index ed8b085902..efd8474910 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs @@ -6,13 +6,9 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; -using ICSharpCode.SharpDevelop.Gui.OptionPanels; -using ICSharpCode.SharpDevelop.Project.InnerExpand; -using Mono.Cecil; - namespace ICSharpCode.SharpDevelop.Project { - public class ReferenceNode : CustomFolderNode + public class ReferenceNode : AbstractProjectBrowserTreeNode { ReferenceProjectItem referenceProjectItem; @@ -30,74 +26,6 @@ namespace ICSharpCode.SharpDevelop.Project ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ReferenceNode"; SetIcon("Icons.16x16.Reference"); Text = referenceProjectItem.ShortName; - - this.PerformInitialization(); - - ParserService.LoadSolutionProjectsThreadEnded += delegate { ShowNamespaces(); }; - } - - Dictionary> namespaces = new Dictionary>(); - - public void ShowNamespaces(bool forceRefresh = false) - { - if (!SharpDevelopUIOptions.ExpandReferences) - return; - - if (namespaces.Count > 0 && !forceRefresh) - return; - - namespaces.Clear(); - Nodes.Clear(); - - if (string.IsNullOrEmpty(referenceProjectItem.FileName)) return; - if (!File.Exists(referenceProjectItem.FileName)) return; - - if (Path.GetExtension(referenceProjectItem.FileName) == ".dll" || - Path.GetExtension(referenceProjectItem.FileName) == ".exe") - { - var asm = AssemblyDefinition.ReadAssembly(referenceProjectItem.FileName); - foreach (var module in asm.Modules) { - if (!module.HasTypes) continue; - - foreach (var type in module.Types) { - - if (string.IsNullOrEmpty(type.Namespace)) continue; - - if (!namespaces.ContainsKey(type.Namespace)) - namespaces.Add(type.Namespace, new List()); - - namespaces[type.Namespace].Add(type); - } - - foreach (var ns in namespaces.Keys) - { - var nsNode = new NamespaceNode(ns, namespaces[ns]); - nsNode.InsertSorted(this); - } - } - } - - if (Path.GetExtension(referenceProjectItem.FileName).EndsWith("proj")) { - // use parser service - } - } - - public override void Expanding() - { - foreach (var node in Nodes) { - if (!(node is NamespaceNode)) continue; - - var n = (NamespaceNode)node; - n.RefreshNodes(); - } - - base.Expanding(); - } - - public override void Refresh() - { - ShowNamespaces(true); - base.Refresh(); } #region Cut & Paste diff --git a/src/Main/Base/Project/Src/Services/DecompilerService/DecompilerService.cs b/src/Main/Base/Project/Src/Services/DecompilerService/DecompilerService.cs deleted file mode 100644 index 510404a9ce..0000000000 --- a/src/Main/Base/Project/Src/Services/DecompilerService/DecompilerService.cs +++ /dev/null @@ -1,338 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) - -using System; -using System.CodeDom; -using System.CodeDom.Compiler; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Windows.Navigation; -using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.SharpDevelop.Project; -using Mono.Cecil; - -namespace ICSharpCode.SharpDevelop -{ - public static class DecompilerService - { - public static string GetParameters(MethodDefinition method) - { - StringBuilder sb = new StringBuilder(); - - if (!method.HasParameters) - sb.Append("()"); - else { - sb.Append("("); - for (int i = 0 ; i < method.Parameters.Count; ++i) { - var p = method.Parameters[i]; - - if (p.IsOut) - sb.Append("out "); - else - if (p.ParameterType.IsByReference) - sb.Append("ref "); - - sb.Append(p.ParameterType.Name.Replace("&", string.Empty)); - sb.Append(" "); - - sb.Append(p.Name); - - if (i < method.Parameters.Count - 1) - sb.Append(", "); - } - sb.Append(")"); - } - - return sb.ToString(); - } - - public static void ReadMetadata(IClass c, out string filePath) - { - if (c == null) { - filePath = null; - return; - } - - CodeCompileUnit compileUnit = new CodeCompileUnit(); - - // add namespace - CodeNamespace generatedNamespace = new CodeNamespace(c.Namespace); - generatedNamespace.Imports.Add(new CodeNamespaceImport("System")); - compileUnit.Namespaces.Add(generatedNamespace); - - // add type - var targetClass = new CodeTypeDeclaration(c.Name); - - // write attributes - AddAttributes(c, targetClass); - - // write class definition - if (c.IsPublic) targetClass.TypeAttributes |= System.Reflection.TypeAttributes.Public; - if (c.IsSealed) targetClass.TypeAttributes |= System.Reflection.TypeAttributes.Sealed; - // static class limitation - c.IsStatic: https://connect.microsoft.com/VisualStudio/feedback/details/93653/codedom-unable-to-generate-static-events-and-classes - targetClass.IsPartial = c.IsPartial; - - switch (c.ClassType) { - case ClassType.Class: - targetClass.IsClass = true; - break; - case ClassType.Enum: - targetClass.IsEnum = true; - break; - case ClassType.Interface: - targetClass.IsInterface = true; - break; - case ClassType.Struct: - targetClass.IsStruct = true; - break; - } - - // generics - foreach (var typeParameter in c.TypeParameters) { - var tp = new CodeTypeParameter(typeParameter.Name); - foreach (var con in typeParameter.Constraints) { - tp.Constraints.Add(con.Name); - } - targetClass.TypeParameters.Add(tp); - } - - // base types - foreach (var basetype in c.BaseTypes) { - if (basetype.FullyQualifiedName.Equals("System.Object", StringComparison.OrdinalIgnoreCase)) - continue; - var baseType = AddGenericBaseTypes(basetype); - targetClass.BaseTypes.Add(baseType); - } - - // field members - foreach (var f in c.Fields) { - if (!f.IsPublic && !f.IsProtected) continue; - - CodeMemberField field = new CodeMemberField() { Name = f.Name, - Attributes = MemberAttributes.Public }; - AddDefinition(f, field); - AddAttributes(f, field); - AddDocumentation(f, field); - - field.Type = new CodeTypeReference(f.ReturnType.FullyQualifiedName); - targetClass.Members.Add(field); - } - - // event members - foreach (var e in c.Events) { - if (!e.IsPublic && !e.IsProtected) continue; - CodeMemberEvent ev = new CodeMemberEvent() { Name = e.Name, - Attributes = MemberAttributes.Public, - Type = new CodeTypeReference(e.ReturnType.FullyQualifiedName) }; - AddDefinition(e, ev); - AddDocumentation(e, ev); - - targetClass.Members.Add(ev); - } - - // properties - foreach (var property in c.Properties) { - if (!property.IsPublic && !property.IsProtected) continue; - CodeMemberProperty p = new CodeMemberProperty() { - Name = property.Name, - Attributes = MemberAttributes.Public, - Type = new CodeTypeReference(property.ReturnType.FullyQualifiedName), - HasGet = property.CanGet, - HasSet = property.CanSet - }; - - AddAttributes(property, p); - AddDefinition(property, p); - AddDocumentation(property, p); - - if (property.IsIndexer) { - p.Parameters.Add(new CodeParameterDeclarationExpression("System.Int32", "index")); - } - targetClass.Members.Add(p); - } - - // methods and constructors - foreach (var method in c.Methods) { - if (!method.IsPublic && !method.IsProtected) continue; - - if (method.IsConstructor) { - CodeConstructor constructor = new CodeConstructor() { Name = c.Name, - Attributes = MemberAttributes.Public }; - AddAttributes(method, constructor); - AddDefinition(method, constructor); - AddParameters(method, constructor); - AddDocumentation(method, constructor); - - targetClass.Members.Add(constructor); - } else { - CodeMemberMethod m = new CodeMemberMethod() { - Name = method.Name, - Attributes = MemberAttributes.Public, - ReturnType = new CodeTypeReference(method.ReturnType.FullyQualifiedName), - }; - - AddAttributes(method, m); - AddDefinition(method, m); - AddParameters(method, m); - AddDocumentation(method, m); - - targetClass.Members.Add(m); - } - } - - // delegates - foreach (var inner in c.InnerClasses) { - if (inner.ClassType == ClassType.Delegate) { - IMethod invoker = inner.Methods.Where(method => method.Name == "Invoke").FirstOrDefault(); - CodeTypeDelegate del = new CodeTypeDelegate(inner.Name) { - Attributes = MemberAttributes.Public, - ReturnType = new CodeTypeReference(invoker.ReturnType.FullyQualifiedName) - }; - - AddDocumentation(invoker, del); - - foreach (var p in invoker.Parameters) - del.Parameters.Add(new CodeParameterDeclarationExpression(p.ReturnType.FullyQualifiedName, p.Name)); - - targetClass.Members.Add(del); - } - } - - // add class - generatedNamespace.Types.Add(targetClass); - filePath = WriteTempFile(c.Name, compileUnit); - } - - static CodeTypeReference AddGenericBaseTypes(IReturnType basetype) - { - string type = basetype.FullyQualifiedName; - CodeTypeReference baseType = new CodeTypeReference(type); - if (basetype.IsConstructedReturnType) - { - var constructed = basetype as ConstructedReturnType; - int i = 0; - foreach (var typearg in constructed.TypeArguments) { - baseType.TypeArguments.Add(new CodeTypeReference(typearg.Name, CodeTypeReferenceOptions.GenericTypeParameter)); - - if (typearg is ConstructedReturnType) { - CodeTypeReference baseType1 = new CodeTypeReference(typearg.FullyQualifiedName); - baseType1.TypeArguments.Add(AddGenericBaseTypes(typearg)); - baseType.TypeArguments[i].TypeArguments.Add(baseType1); - } - ++i; - } - } - - return baseType; - } - - static void AddParameters(IMethod method, CodeMemberMethod m) - { - foreach (var p in method.Parameters) { - string returnType = p.ReturnType.FullyQualifiedName; - - var par = new CodeParameterDeclarationExpression(returnType, p.Name); - - if (p.ReturnType.IsConstructedReturnType) - { - CodeTypeReference baseType = new CodeTypeReference(returnType); - var c = p.ReturnType as ConstructedReturnType; - foreach (var typearg in c.TypeArguments) { - baseType.TypeArguments.Add(new CodeTypeReference(typearg.Name, CodeTypeReferenceOptions.GenericTypeParameter)); - } - - par.Type = baseType; - } - - if (p.IsRef) - par.Direction = FieldDirection.Ref; - if (p.IsOut) - par.Direction = FieldDirection.Out; - if (p.IsParams) - par.CustomAttributes.Add(new CodeAttributeDeclaration(new CodeTypeReference(typeof(System.ParamArrayAttribute)))); - // TODO: if (p.IsOptional) - - m.Parameters.Add(par); - } - } - - static void AddDocumentation(IEntity entity, CodeTypeMember member) - { - if (string.IsNullOrEmpty(entity.Documentation) || string.IsNullOrEmpty(entity.Documentation.Trim())) - return; - - member.Comments.Add(new CodeCommentStatement(entity.Documentation.Replace(" ", string.Empty), true)); - } - - static void AddDefinition(IEntity entity, CodeTypeMember member) - { - if (entity.IsProtected) - member.Attributes = MemberAttributes.Family; - - if (entity.IsStatic) - member.Attributes |= MemberAttributes.Static; - if (entity.IsNew) - member.Attributes |= MemberAttributes.New; - if (entity.IsOverride) - member.Attributes |= MemberAttributes.Override; - if (entity.IsAbstract) - member.Attributes |= MemberAttributes.Abstract; - if (entity.IsVirtual) - member.Attributes |= MemberAttributes.Final; - if (entity.IsConst) - member.Attributes |= MemberAttributes.Const; - } - - static void AddAttributes(IEntity entity, CodeTypeMember member) - { - // write attributes - foreach (var attr in entity.Attributes) { - - List list = new List(); - for (int i = 0; i < attr.PositionalArguments.Count; i++) { - if (!(attr.PositionalArguments[i] is IReturnType)) - list.Add(new CodeAttributeArgument(new CodePrimitiveExpression(attr.PositionalArguments[i]))); - } - - if (list.Count == 0) { - member.CustomAttributes.Add( - new CodeAttributeDeclaration(attr.AttributeType.FullyQualifiedName)); - } else { - member.CustomAttributes.Add( - new CodeAttributeDeclaration(attr.AttributeType.FullyQualifiedName, list.ToArray())); - } - } - } - - static string WriteTempFile(string fileName, CodeCompileUnit compileUnit) - { - // temp file - string tempFolder = Path.GetTempPath(); - string file = fileName + ".temp." + - ProjectService.CurrentProject.LanguageProperties.CodeDomProvider.FileExtension; - - string filePath = Path.Combine(tempFolder, file); - - if (File.Exists(filePath)) - File.SetAttributes(filePath, FileAttributes.Temporary); - - // write file - using (var sw = new StreamWriter(filePath, false)) - { - ProjectService - .CurrentProject - .LanguageProperties - .CodeDomProvider.GenerateCodeFromCompileUnit( - compileUnit, - sw, - new CodeGeneratorOptions()); - } - - File.SetAttributes(filePath, FileAttributes.ReadOnly); - return filePath; - } - } -} \ No newline at end of file