예제 #1
0
        public Task <List <ReferenceSegment> > DecompileAsync(TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
        {
            var assemblyLoader = (AssemblyLoader)navigator.DataItem;

            return(MethodDefinitionNodeBuilder.DecompileAsync(data, MethodDefinitionNodeBuilder.GetAssemblyLoader(navigator), b =>
                                                              b.DecompileModuleAndAssemblyAttributes(), flags: flags));
        }
예제 #2
0
		Task<List<ReferenceSegment>> IAssemblyBrowserNodeBuilder.DisassembleAsync (TextEditor data, ITreeNavigator navigator)
		{
			if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data)) 
				return EmptyReferenceSegmentTask;
			var evt = (IEvent)navigator.DataItem;
			return MethodDefinitionNodeBuilder.DisassembleAsync (data, rd => rd.DisassembleEvent (evt.ParentModule.PEFile, (System.Reflection.Metadata.EventDefinitionHandle)evt.MetadataToken));
		}
        public static IconId GetStockIcon(PropertyDefinition property)
        {
            var accessor = property.GetMethod ?? property.SetMethod;
            var isStatic = (accessor.Attributes & MethodAttributes.Static) != 0;
            var global   = isStatic ? "static-" : "";

            return("md-" + MethodDefinitionNodeBuilder.GetAccess(accessor.Attributes) + global + "property");
        }
예제 #4
0
		Task<List<ReferenceSegment>> IAssemblyBrowserNodeBuilder.DecompileAsync (TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
		{
			if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity (navigator, data)) 
				return EmptyReferenceSegmentTask;
			var evt = navigator.DataItem as IEvent;
			if (evt == null)
				return EmptyReferenceSegmentTask;
			return MethodDefinitionNodeBuilder.DecompileAsync (data, MethodDefinitionNodeBuilder.GetAssemblyLoader (navigator), b => b.Decompile (evt.MetadataToken), flags: flags);
		}
예제 #5
0
        Task <List <ReferenceSegment> > IAssemblyBrowserNodeBuilder.DisassembleAsync(TextEditor data, ITreeNavigator navigator)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(EmptyReferenceSegmentTask);
            }
            var property = (IProperty)navigator.DataItem;

            return(MethodDefinitionNodeBuilder.DisassembleAsync(data, rd => rd.DisassembleProperty(property.ParentModule.PEFile, (System.Reflection.Metadata.PropertyDefinitionHandle)property.MetadataToken)));
        }
예제 #6
0
        List <ReferenceSegment> IAssemblyBrowserNodeBuilder.Disassemble(TextEditor data, ITreeNavigator navigator)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(null);
            }
            var property = (PropertyDefinition)navigator.DataItem;

            return(MethodDefinitionNodeBuilder.Disassemble(data, rd => rd.DisassembleProperty(property)));
        }
예제 #7
0
 public List<ReferenceSegment> Disassemble(TextEditor data, ITreeNavigator navigator)
 {
     var assemblyLoader = (AssemblyLoader)navigator.DataItem;
     var compilationUnit = assemblyLoader.Assembly;
     if (compilationUnit == null) {
         LoggingService.LogError ("Can't get cecil object for assembly:" + assemblyLoader.Assembly.FullName);
         return new List<ReferenceSegment> ();
     }
     return MethodDefinitionNodeBuilder.Disassemble (data, rd => rd.WriteAssemblyHeader (compilationUnit));
 }
예제 #8
0
		public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
		{
			var evt = (IEvent)dataObject;
			nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (evt.GetDisplayString ());
			var accessor = evt.AddAccessor ?? evt.RemoveAccessor;

			if (!accessor.IsPublic ())
				nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate (nodeInfo.Label);

			nodeInfo.Icon = Context.GetIcon (GetStockIcon (evt));
		}
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var type = (ITypeDefinition)dataObject;

            nodeInfo.Label = Ide.TypeSystem.Ambience.EscapeText(treeBuilder.NodeName);
            if (!type.IsPublic())
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }
            nodeInfo.Icon = Context.GetIcon(GetStockIcon(type));
        }
예제 #10
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var type = (TypeDefinition)dataObject;

            nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText(CSharpLanguage.Instance.FormatTypeName(type));
            if (!type.IsPublic)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }
            nodeInfo.Icon = Context.GetIcon(GetStockIcon(type));
        }
예제 #11
0
 Task <List <ReferenceSegment> > IAssemblyBrowserNodeBuilder.DecompileAsync(TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
 {
     if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
     {
         return(EmptyReferenceSegmentTask);
     }
     if (!(navigator.DataItem is IProperty property))
     {
         return(EmptyReferenceSegmentTask);
     }
     return(MethodDefinitionNodeBuilder.DecompileAsync(data, MethodDefinitionNodeBuilder.GetAssemblyLoader(navigator), b => b.Decompile(property.MetadataToken), flags: flags));
 }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var field = (FieldDefinition)dataObject;

            nodeInfo.Label = field.Name + " : " + CSharpLanguage.Instance.TypeToString(field.FieldType, false, field);

            if (((FieldAttributes.Private | FieldAttributes.Assembly) & field.Attributes) != 0)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }
            nodeInfo.Icon = Context.GetIcon(GetStockIcon(field));
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var field = (FieldDefinition)dataObject;

            nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText(field.Name + " : " + CSharpLanguage.Instance.TypeToString(field.FieldType, false, field));

            if (!field.IsPublic)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }
            nodeInfo.Icon = Context.GetIcon(GetStockIcon(field));
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var field = (IField)dataObject;

            nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText(field.GetDisplayString());

            if (!field.IsPublic())
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }
            nodeInfo.Icon = Context.GetIcon(GetStockIcon(field));
        }
예제 #15
0
        List <ReferenceSegment> IAssemblyBrowserNodeBuilder.Decompile(TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(null);
            }
            var field = (IField)navigator.DataItem;

            if (field == null)
            {
                return(null);
            }
            return(MethodDefinitionNodeBuilder.Decompile(data, MethodDefinitionNodeBuilder.GetAssemblyLoader(navigator), b => b.Decompile(field.MetadataToken), flags: flags));
        }
        Task <List <ReferenceSegment> > IAssemblyBrowserNodeBuilder.DisassembleAsync(TextEditor data, ITreeNavigator navigator)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(EmptyReferenceSegmentTask);
            }
            var field = (IField)navigator.DataItem;

            if (field == null)
            {
                return(EmptyReferenceSegmentTask);
            }
            return(MethodDefinitionNodeBuilder.DisassembleAsync(data, rd => rd.DisassembleField(field.ParentModule.PEFile, (System.Reflection.Metadata.FieldDefinitionHandle)field.MetadataToken)));
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var evt = (EventDefinition)dataObject;

            nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText(evt.Name + " : " + CSharpLanguage.Instance.TypeToString(evt.EventType, false, evt));
            var accessor = evt.AddMethod ?? evt.RemoveMethod;

            if (!accessor.IsPublic)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }

            nodeInfo.Icon = Context.GetIcon(GetStockIcon(evt));
        }
        public List <ReferenceSegment> Decompile(TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
        {
            if (HandleSourceCodeEntity(navigator, data))
            {
                return(null);
            }
            var cecilMethod = (MethodDefinition)navigator.DataItem;

            if (cecilMethod == null)
            {
                return(null);
            }
            return(MethodDefinitionNodeBuilder.Decompile(data, MethodDefinitionNodeBuilder.GetAssemblyLoader(navigator), b => b.Decompile(cecilMethod), flags: flags));
        }
        List <ReferenceSegment> IAssemblyBrowserNodeBuilder.Disassemble(TextEditor data, ITreeNavigator navigator)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(null);
            }
            var field = (FieldDefinition)navigator.DataItem;

            if (field == null)
            {
                return(null);
            }
            return(MethodDefinitionNodeBuilder.Disassemble(data, rd => rd.DisassembleField(field)));
        }
예제 #20
0
        List <ReferenceSegment> IAssemblyBrowserNodeBuilder.Decompile(TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(null);
            }
            var property = navigator.DataItem as PropertyDefinition;

            if (property == null)
            {
                return(null);
            }
            return(MethodDefinitionNodeBuilder.Decompile(data, MethodDefinitionNodeBuilder.GetAssemblyLoader(navigator), b => b.Decompile(property), flags: flags));
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var evt = (EventDefinition)dataObject;

            nodeInfo.Label = evt.Name + " : " + CSharpLanguage.Instance.TypeToString(evt.EventType, false, evt);
            var accessor = evt.AddMethod ?? evt.RemoveMethod;

            if (((MethodAttributes.Private | MethodAttributes.Assembly) & accessor.Attributes) != 0)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }

            nodeInfo.Icon = Context.GetIcon(GetStockIcon(evt));
        }
예제 #22
0
        public List <ReferenceSegment> Disassemble(TextEditor data, ITreeNavigator navigator)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(null);
            }
            var type = (TypeDefinition)navigator.DataItem;

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

            return(MethodDefinitionNodeBuilder.Disassemble(data, rd => rd.DisassembleType(type)));
        }
        public Task <List <ReferenceSegment> > DisassembleAsync(TextEditor data, ITreeNavigator navigator)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(EmptyReferenceSegmentTask);
            }
            var type = (ITypeDefinition)navigator.DataItem;

            if (type == null)
            {
                return(EmptyReferenceSegmentTask);
            }

            return(MethodDefinitionNodeBuilder.DisassembleAsync(data, rd => rd.DisassembleType(type.ParentModule.PEFile, (System.Reflection.Metadata.TypeDefinitionHandle)type.MetadataToken)));
        }
예제 #24
0
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var property = (PropertyDefinition)dataObject;

            nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText(GetText(property, property.IsIndexer()));

            var accessor = property.GetMethod ?? property.SetMethod;

            if (!accessor.IsPublic)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }

            nodeInfo.Icon = Context.GetIcon(GetStockIcon(property));
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var method = (IMethod)dataObject;

            var ambience = new CSharpAmbience();

            nodeInfo.Label = Ide.TypeSystem.Ambience.EscapeText(method.GetDisplayString());

            if (method.IsPrivate())
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }

            nodeInfo.Icon = Context.GetIcon(GetStockIcon(method));
        }
        public override void BuildNode(ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
        {
            var method = (MethodDefinition)dataObject;

            var ambience = new CSharpAmbience();

            try {
                nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText(GetText(method));
            } catch (Exception) {
                nodeInfo.Label = method.Name;
            }

            if (method.IsPrivate || method.IsAssembly)
            {
                nodeInfo.Label = MethodDefinitionNodeBuilder.FormatPrivate(nodeInfo.Label);
            }

            nodeInfo.Icon = Context.GetIcon(GetStockIcon(method));
        }
        public Task <List <ReferenceSegment> > DecompileAsync(TextEditor data, ITreeNavigator navigator, DecompileFlags flags)
        {
            if (MethodDefinitionNodeBuilder.HandleSourceCodeEntity(navigator, data))
            {
                return(EmptyReferenceSegmentTask);
            }
            var type = (ITypeDefinition)navigator.DataItem;

            if (type == null)
            {
                return(EmptyReferenceSegmentTask);
            }
            var settings = MethodDefinitionNodeBuilder.GetDecompilerSettings(data, flags.PublicOnly);

            // CSharpLanguage.Instance.DecompileType (type, output, settings);
            return(MethodDefinitionNodeBuilder.DecompileAsync(
                       data,
                       MethodDefinitionNodeBuilder.GetAssemblyLoader(navigator),
                       builder => builder.Decompile(type.MetadataToken), flags: flags));
        }
예제 #28
0
        public static IconId GetStockIcon(PropertyDefinition property)
        {
            var accessor = property.GetMethod ?? property.SetMethod;

            return(MethodDefinitionNodeBuilder.GetStockIcon(accessor));
        }
        public static IconId GetStockIcon(EventDefinition evt)
        {
            var accessor = evt.AddMethod ?? evt.RemoveMethod;

            return(MethodDefinitionNodeBuilder.GetStockIcon(accessor));
        }
예제 #30
0
		public static IconId GetStockIcon (IEvent evt)
		{
			var accessor = evt.AddAccessor ?? evt.RemoveAccessor;
			return MethodDefinitionNodeBuilder.GetStockIcon (accessor);
		}