Пример #1
0
        public IEnumerable <TreeNodeData> Create(TreeNodeDataProviderContext context)
        {
            var fileNode = context.Owner.Data as DsDocumentNode;

            Debug.Assert(fileNode != null);
            if (fileNode == null)
            {
                yield break;
            }

            bool hasPENode = HasPENode(fileNode);
            var  peImage   = fileNode.Document.PEImage;

            Debug.Assert(!hasPENode || peImage != null);
            if (hasPENode && peImage != null)
            {
                Func <HexBufferFile> createBufferFile = () => {
                    var buffer     = hexBufferService.Value.GetOrCreate(peImage);
                    var service    = hexBufferFileServiceFactory.Value.Create(buffer);
                    var pePosition = HexPosition.Zero;
                    var bufferFile = service.GetFile(pePosition, checkNestedFiles: false);
                    Debug.Assert(bufferFile != null, "File hasn't been created");
                    return(bufferFile);
                };
                yield return(new PENode(createBufferFile, peStructureProviderFactory.Value));
            }
        }
Пример #2
0
 internal void AddChildren(TreeNodeImpl impl)
 {
     foreach (var data in impl.Data.CreateChildren())
     {
         AddSorted(impl, Create(data));
     }
     foreach (var provider in treeViewService.GetProviders(impl.Data.Guid))
     {
         var context = new TreeNodeDataProviderContext(impl);
         foreach (var data in provider.Create(context))
         {
             AddSorted(impl, Create(data));
         }
     }
 }
        public IEnumerable <ITreeNodeData> Create(TreeNodeDataProviderContext context)
        {
            var fileNode = context.Owner.Data as IDnSpyFileNode;

            Debug.Assert(fileNode != null);
            if (fileNode == null)
            {
                yield break;
            }

            bool hasPENode = HasPENode(fileNode);
            var  peImage   = fileNode.DnSpyFile.PEImage;

            Debug.Assert(!hasPENode || peImage != null);
            if (hasPENode && peImage != null)
            {
                yield return(new PENode(hexDocumentManager.Value, peImage, fileNode.DnSpyFile.ModuleDef as ModuleDefMD));
            }
        }
Пример #4
0
 public IEnumerable <TreeNodeData> Create(TreeNodeDataProviderContext context)
 {
     yield return(new ModuleChildNode());
 }
 public IEnumerable <ITreeNodeData> Create(TreeNodeDataProviderContext context)
 {
     yield return(new AssemblyChildNode());
 }